<?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>239444</bug_id>
          
          <creation_ts>2022-04-17 17:20:41 -0700</creation_ts>
          <short_desc>[WebGPU] Update WebGPU CTS to revision 549d7c2f1637321a9247f0a3ab022f919e5ca5da</short_desc>
          <delta_ts>2022-04-20 10:10: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>
          
          <blocked>239447</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>1862184</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-17 17:20:41 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862185</commentid>
    <comment_count>1</comment_count>
      <attachid>457785</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-17 17:22:32 -0700</bug_when>
    <thetext>Created attachment 457785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862942</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-20 08:28:30 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 457785 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862969</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-20 10:09:11 -0700</bug_when>
    <thetext>Committed r293101 (?): &lt;https://commits.webkit.org/r293101&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862970</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-20 10:10:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/92035081&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457785</attachid>
            <date>2022-04-17 17:22:32 -0700</date>
            <delta_ts>2022-04-20 08:28:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>606007</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGE4MGQ1YmJjYjcwOWFhZDE2NmMxMGI0NmQ5MGE2ODZlYzk5ZGVmZTEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDE3
IDE3OjIxOjUxIDIwMjIgLTA3MDAKCiAgICBUZXN0cwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1M2EyM2YwYWVmNTAuLjZm
YTI5MGJjYTliZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxOSBAQAorMjAyMi0wNC0xNyAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIFVwZGF0
ZSBXZWJHUFUgQ1RTIHRvIHJldmlzaW9uIDU0OWQ3YzJmMTYzNzMyMWE5MjQ3ZjBhM2FiMDIyZjkx
OWU1Y2E1ZGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTQ0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgaW5jbHVkZXMgYSBmaXggZm9yIGFwaS92YWxpZGF0aW9uL2NyZWF0ZVRleHR1cmUuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS9jb21tb24vZnJhbWV3b3JrL2ZpeHR1cmUuanM6
CisgICAgICAgIChleHBvcnQuRml4dHVyZS5wcm90b3R5cGUuZXZlbnR1YWxFeHBlY3RPSyk6Cisg
ICAgICAgIChleHBvcnQuRml4dHVyZSk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvY29t
bW9uL2ludGVybmFsL3ZlcnNpb24uanM6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvY3Rz
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVy
YXRpb24vYWRhcHRlci9yZXF1ZXN0RGV2aWNlX2xpbWl0cy5zcGVjLmpzOgorICAgICAgICAoZy50
ZXN0LnN0cmluZ19hcHBlYXJlZF9oZXJlLmRlc2MuVGVzdC50aGF0LnNwZWNpZnlpbmcubGltaXRz
LnRoYXQuYXJlbi5yZXF1ZXN0RGV2aWNlLnRvLnJlamVjdC5mbi5hc3luYyB0KToKKyAgICAgICAg
KHN0cmluZ19hcHBlYXJlZF9oZXJlLmZuLmFzeW5jIHQpOgorICAgICAgICAoa0xpbWl0cy5iZWdp
blN1YmNhc2VzLmV4cGFuZFdpdGhQYXJhbXMucC5zd2l0Y2guY2FzZSk6CisgICAgICAgIChrTGlt
aXRzLmJlZ2luU3ViY2FzZXMuZXhwYW5kV2l0aFBhcmFtcy5wLnN3aXRjaCk6CisgICAgICAgIChm
bi5hc3luYyB0KToKKyAgICAgICAgKGZuLmFzeW5jIHQuc3dpdGNoLmNhc2UpOgorICAgICAgICAo
NjU1MzUuZm4uYXN5bmMgdCk6IERlbGV0ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS9vcGVyYXRpb24vY29tbWFuZF9idWZmZXIvY29weVRleHR1cmVUb1RleHR1cmUu
c3BlYy5qczoKKyAgICAgICAgKEYucHJvdG90eXBlLkdldFJlbmRlclBpcGVsaW5lRm9yVDJUQ29w
eVdpdGhEZXB0aFRlc3RzKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L29wZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9pbWFnZV9jb3B5LnNwZWMuanM6CisgICAgICAgICgw
LmFuZC5pcy5pc25zdHJpbmdfYXBwZWFyZWRfaGVyZXQucG93ZXIub2YuMi52YWx1ZXMuYWxzby5p
bmNsdWRpbmcuSW1hZ2VDb3B5VGVzdC5wcm90b3R5cGUuYXN5bmMgY2hlY2tTdGVuY2lsVGV4dHVy
ZUNvbnRlbnQpOgorICAgICAgICAoMC5hbmQuaXMuaXNuc3RyaW5nX2FwcGVhcmVkX2hlcmV0LnBv
d2VyLm9mLjIudmFsdWVzLmFsc28uaW5jbHVkaW5nLkltYWdlQ29weVRlc3QucHJvdG90eXBlLkRv
Q29weVRleHR1cmVUb0J1ZmZlcldpdGhEZXB0aEFzcGVjdFRlc3QpOgorICAgICAgICAoMC5hbmQu
aXMuaXNuc3RyaW5nX2FwcGVhcmVkX2hlcmV0LnBvd2VyLm9mLjIudmFsdWVzLmFsc28uaW5jbHVk
aW5nLkltYWdlQ29weVRlc3QpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvb3BlcmF0aW9uL2NvbW1hbmRfYnVmZmVyL3Byb2dyYW1tYWJsZS9wcm9ncmFtbWFibGVfc3Rh
dGVfdGVzdC5qczoKKyAgICAgICAgKGV4cG9ydC5Qcm9ncmFtbWFibGVTdGF0ZVRlc3QucHJvdG90
eXBlLmNyZWF0ZUJpbmRpbmdTdGF0ZVBpcGVsaW5lKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9yZW5kZXIvc3RhdGVfdHJh
Y2tpbmcuc3BlYy5qczoKKyAgICAgICAgKFZlcnRleEFuZEluZGV4U3RhdGVUcmFja2luZ1Rlc3Qu
cHJvdG90eXBlLkdldFJlbmRlclBpcGVsaW5lRm9yVGVzdCk6CisgICAgICAgIChWZXJ0ZXhBbmRJ
bmRleFN0YXRlVHJhY2tpbmdUZXN0KToKKyAgICAgICAgKFRoZS50ZXN0LnZlcmlmaWVzLmJvdGgu
b2YudGhlc2UudHdvLmRyYXcuY2FsbHMud29yay5jb3JyZWN0bHkuZm4uYXN5bmMgdCk6CisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vY29tcHV0ZS9iYXNp
Yy5zcGVjLmpzOgorICAgICAgICAoZy50ZXN0LnN0cmluZ19hcHBlYXJlZF9oZXJlLmZuLmFzeW5j
IHQpOgorICAgICAgICAoa01heENvbXB1dGVXb3JrZ3JvdXBTaXplLnAubGFyZ2VEaW1lbnNpb24u
Zm4uYXN5bmMgdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVy
YXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL2J1ZmZlcl9zeW5jX3Rlc3QuanM6CisgICAgICAgIChl
eHBvcnQuY2hlY2tPcHNWYWxpZEZvckNvbnRleHQpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5
bmNUZXN0LnByb3RvdHlwZS5hc3luYyBjcmVhdGVJbnRlcm1lZGlhdGVCdWZmZXJzQW5kVGV4dHVy
ZXNGb3JXcml0ZU9wKToKKyAgICAgICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUu
YXN5bmMgY3JlYXRlQnVmZmVyc0ZvclJlYWRPcCk6CisgICAgICAgIChleHBvcnQuQnVmZmVyU3lu
Y1Rlc3QucHJvdG90eXBlLmFzeW5jIGNyZWF0ZUJ1ZmZlcldpdGhWYWx1ZSk6CisgICAgICAgIChl
eHBvcnQuQnVmZmVyU3luY1Rlc3QucHJvdG90eXBlLmFzeW5jIGNyZWF0ZUJ1ZmZlcldpdGhWYWx1
ZXMpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNUZXN0LnByb3RvdHlwZS5hc3luYyBjcmVh
dGVUZXh0dXJlV2l0aFZhbHVlKToKKyAgICAgICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90
b3R5cGUuY3JlYXRlU3RvcmFnZVdyaXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKGV4cG9y
dC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuY3JlYXRlVHJpdmlhbFJlbmRlclBpcGVsaW5lKToK
KyAgICAgICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuY3JlYXRlU3RvcmFnZVdy
aXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNUZXN0LnByb3Rv
dHlwZS5iZWdpblNpbXBsZVJlbmRlclBhc3MpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNU
ZXN0LnByb3RvdHlwZS5lbmNvZGVXcml0ZUFzU3RvcmFnZUJ1ZmZlckluUmVuZGVyUGFzcyk6Cisg
ICAgICAgIChleHBvcnQuQnVmZmVyU3luY1Rlc3QucHJvdG90eXBlLmVuY29kZVdyaXRlQXNTdG9y
YWdlQnVmZmVySW5Db21wdXRlUGFzcyk6CisgICAgICAgIChleHBvcnQuQnVmZmVyU3luY1Rlc3Qu
cHJvdG90eXBlLmVuY29kZVdyaXRlQnlCMkJDb3B5KToKKyAgICAgICAgKGV4cG9ydC5CdWZmZXJT
eW5jVGVzdC5wcm90b3R5cGUuZW5jb2RlV3JpdGVCeVQyQkNvcHkpOgorICAgICAgICAoZXhwb3J0
LkJ1ZmZlclN5bmNUZXN0LnByb3RvdHlwZS53cml0ZUJ5V3JpdGVCdWZmZXIpOgorICAgICAgICAo
ZXhwb3J0LkJ1ZmZlclN5bmNUZXN0LnByb3RvdHlwZS5lbmNvZGVXcml0ZU9wKToKKyAgICAgICAg
KGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuY3JlYXRlU3RvcmFnZVJlYWRDb21wdXRl
UGlwZWxpbmUpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNUZXN0LnByb3RvdHlwZS5jcmVh
dGVCaW5kR3JvdXBTcmNEc3RCdWZmZXIpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNUZXN0
LnByb3RvdHlwZS5jcmVhdGVWZXJ0ZXhSZWFkUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAoZXhw
b3J0LkJ1ZmZlclN5bmNUZXN0LnByb3RvdHlwZS5jcmVhdGVVbmlmb3JtUmVhZFJlbmRlclBpcGVs
aW5lKToKKyAgICAgICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuY3JlYXRlU3Rv
cmFnZVJlYWRSZW5kZXJQaXBlbGluZSk6CisgICAgICAgIChleHBvcnQuQnVmZmVyU3luY1Rlc3Qu
cHJvdG90eXBlLmVuY29kZVJlYWRBc1N0b3JhZ2VCdWZmZXJJbkNvbXB1dGVQYXNzKToKKyAgICAg
ICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuZW5jb2RlUmVhZEFzSW5kaXJlY3RC
dWZmZXJJbkNvbXB1dGVQYXNzKToKKyAgICAgICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90
b3R5cGUuZW5jb2RlUmVhZEFzVmVydGV4QnVmZmVySW5SZW5kZXJQYXNzKToKKyAgICAgICAgKGV4
cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuZW5jb2RlUmVhZEFzSW5kZXhCdWZmZXJJblJl
bmRlclBhc3MpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNUZXN0LnByb3RvdHlwZS5lbmNv
ZGVSZWFkQXNJbmRpcmVjdEJ1ZmZlckluUmVuZGVyUGFzcyk6CisgICAgICAgIChleHBvcnQuQnVm
ZmVyU3luY1Rlc3QucHJvdG90eXBlLmVuY29kZVJlYWRBc0luZGV4ZWRJbmRpcmVjdEJ1ZmZlcklu
UmVuZGVyUGFzcyk6CisgICAgICAgIChleHBvcnQuQnVmZmVyU3luY1Rlc3QucHJvdG90eXBlLmVu
Y29kZVJlYWRBc1VuaWZvcm1CdWZmZXJJblJlbmRlclBhc3MpOgorICAgICAgICAoZXhwb3J0LkJ1
ZmZlclN5bmNUZXN0LnByb3RvdHlwZS5lbmNvZGVSZWFkQXNTdG9yYWdlQnVmZmVySW5SZW5kZXJQ
YXNzKToKKyAgICAgICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuZW5jb2RlUmVh
ZEJ5QjJCQ29weSk6CisgICAgICAgIChleHBvcnQuQnVmZmVyU3luY1Rlc3QucHJvdG90eXBlLmVu
Y29kZVJlYWRCeUIyVENvcHkpOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNUZXN0LnByb3Rv
dHlwZS5lbmNvZGVSZWFkT3ApOgorICAgICAgICAoZXhwb3J0LkJ1ZmZlclN5bmNUZXN0LnByb3Rv
dHlwZS5hc3luYyBlbmNvZGVXcml0ZUJ5QjJCQ29weSk6IERlbGV0ZWQuCisgICAgICAgIChleHBv
cnQuQnVmZmVyU3luY1Rlc3QucHJvdG90eXBlLmFzeW5jIGVuY29kZVdyaXRlQnlUMkJDb3B5KTog
RGVsZXRlZC4KKyAgICAgICAgKGV4cG9ydC5CdWZmZXJTeW5jVGVzdC5wcm90b3R5cGUuYXN5bmMg
ZW5jb2RlV3JpdGVPcCk6IERlbGV0ZWQuCisgICAgICAgIChleHBvcnQuQnVmZmVyU3luY1Rlc3Qu
cHJvdG90eXBlLmFzeW5jIGNyZWF0ZUNvbW1hbmRCdWZmZXJXaXRoV3JpdGVPcCk6IERlbGV0ZWQu
CisgICAgICAgIChleHBvcnQuQnVmZmVyU3luY1Rlc3QucHJvdG90eXBlLmFzeW5jIHN1Ym1pdFdy
aXRlT3ApOiBEZWxldGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
b3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9tdWx0aXBsZV9idWZmZXJzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9y
eV9zeW5jL2J1ZmZlci9tdWx0aXBsZV9idWZmZXJzLnNwZWMuanM6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZl
ci9zaW5nbGVfYnVmZmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL3NpbmdsZV9i
dWZmZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2Fw
aS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL3NpbmdsZV9idWZmZXIuc3BlYy5qczogQWRk
ZWQuCisgICAgICAgIChwLmtCb3VuZGFyeUluZm8ucC5ib3VuZGFyeS5jb250ZXh0cy5leHBhbmRX
aXRoUGFyYW1zKToKKyAgICAgICAgKGZuLmFzeW5jIHQpOgorICAgICAgICAodHJ1ZS5mbi5hc3lu
YyB0KToKKyAgICAgICAgKGcudGVzdC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5kZXNjLlRlc3Qud3Jp
dGUuYWZ0ZXIud3JpdGUub3BlcmF0aW9ucy5pbi50aGUuc2FtZS5yZW5kZXIuYnVuZGxlLlRoZS5m
aXJzdC53cml0ZS53aWxsLndyaXRlLjEuaW50by5hLnN0b3JhZ2UuYnVmZmVyLlRoZS5zZWNvbmQu
d3JpdGUud2lsbC53cml0ZS4yLmludG8udGhlLnNhbWUuYnVmZmVyLmluLnRoZS5zYW1lLnBhc3Mu
RXhwZWN0ZWQuZGF0YS5pbi5idWZmZXIuaXMuZWl0aGVyLjEub3IuMi5mbi5hc3luYyB0KToKKyAg
ICAgICAgKGcudGVzdC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5kZXNjLlRlc3Qud3JpdGUuYWZ0ZXIu
d3JpdGUub3BlcmF0aW9ucy5pbi50aGUuc2FtZS5jb21wdXRlLnBhc3MuVGhlLmZpcnN0LndyaXRl
LndpbGwud3JpdGUuMS5pbnRvLmEuc3RvcmFnZS5idWZmZXIuVGhlLnNlY29uZC53cml0ZS53aWxs
LndyaXRlLjIuaW50by50aGUuc2FtZS5idWZmZXIuaW4udGhlLnNhbWUucGFzcy5FeHBlY3RlZC5k
YXRhLmluLmJ1ZmZlci5pcy4yLmZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL29wZXJhdGlvbl9jb250ZXh0X2hl
bHBlci5qczogQWRkZWQuCisgICAgICAgIChjb21iaW5lQ29udGV4dHMpOgorICAgICAgICAoZXhw
b3J0Lk9wZXJhdGlvbkNvbnRleHRIZWxwZXIpOgorICAgICAgICAoZXhwb3J0Lk9wZXJhdGlvbkNv
bnRleHRIZWxwZXIucHJvdG90eXBlLmVuc3VyZVN1Ym1pdCk6CisgICAgICAgIChleHBvcnQuT3Bl
cmF0aW9uQ29udGV4dEhlbHBlci5wcm90b3R5cGUucG9wQ29udGV4dCk6CisgICAgICAgIChleHBv
cnQuT3BlcmF0aW9uQ29udGV4dEhlbHBlci5wcm90b3R5cGUubWFrZUR1bW15QXR0YWNobWVudCk6
CisgICAgICAgIChleHBvcnQuT3BlcmF0aW9uQ29udGV4dEhlbHBlci5wcm90b3R5cGUuZW5zdXJl
Q29udGV4dCk6CisgICAgICAgIChleHBvcnQuT3BlcmF0aW9uQ29udGV4dEhlbHBlci5wcm90b3R5
cGUuZmx1c2hSZW5kZXJCdW5kbGVzKToKKyAgICAgICAgKGV4cG9ydC5PcGVyYXRpb25Db250ZXh0
SGVscGVyLnByb3RvdHlwZS5mbHVzaENvbW1hbmRCdWZmZXJzKToKKyAgICAgICAgKGV4cG9ydC5P
cGVyYXRpb25Db250ZXh0SGVscGVyLnByb3RvdHlwZS5lbnN1cmVCb3VuZGFyeSk6CisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvdGV4
dHVyZS9zYW1lX3N1YnJlc291cmNlLnNwZWMuanM6CisgICAgICAgIChUZXh0dXJlU3luY1Rlc3RI
ZWxwZXIpOgorICAgICAgICAoVGV4dHVyZVN5bmNUZXN0SGVscGVyLnByb3RvdHlwZS5wZXJmb3Jt
V3JpdGVPcCk6CisgICAgICAgIChUZXh0dXJlU3luY1Rlc3RIZWxwZXIucHJvdG90eXBlLmVuc3Vy
ZVN1Ym1pdCk6IERlbGV0ZWQuCisgICAgICAgIChUZXh0dXJlU3luY1Rlc3RIZWxwZXIucHJvdG90
eXBlLnBvcENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoVGV4dHVyZVN5bmNUZXN0SGVscGVy
LnByb3RvdHlwZS5tYWtlRHVtbXlBdHRhY2htZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFRleHR1
cmVTeW5jVGVzdEhlbHBlci5wcm90b3R5cGUuZW5zdXJlQ29udGV4dCk6IERlbGV0ZWQuCisgICAg
ICAgIChUZXh0dXJlU3luY1Rlc3RIZWxwZXIucHJvdG90eXBlLmZsdXNoUmVuZGVyQnVuZGxlcyk6
IERlbGV0ZWQuCisgICAgICAgIChUZXh0dXJlU3luY1Rlc3RIZWxwZXIucHJvdG90eXBlLmZsdXNo
Q29tbWFuZEJ1ZmZlcnMpOiBEZWxldGVkLgorICAgICAgICAoVGV4dHVyZVN5bmNUZXN0SGVscGVy
LnByb3RvdHlwZS5lbnN1cmVCb3VuZGFyeSk6IERlbGV0ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvdGV4dHVyZS90ZXh0dXJl
X3N5bmNfdGVzdC5qczoKKyAgICAgICAgKGNvbWJpbmVDb250ZXh0cyk6IERlbGV0ZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVuZGVyX3Bhc3Mv
cmVzb2x2ZS5zcGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
b3BlcmF0aW9uL3JlbmRlcl9wYXNzL3N0b3JlT3Auc3BlYy5qczoKKyAgICAgICAgKGtBcnJheUxh
eWVycy5mbi50LmVsc2UpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
b3BlcmF0aW9uL3JlbmRlcmluZy9iYXNpYy5zcGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcmluZy9ibGVuZGluZy5zcGVjLmpzOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcmlu
Zy9kZXB0aC5zcGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
b3BlcmF0aW9uL3JlbmRlcmluZy9kZXB0aF9jbGlwX2NsYW1wLnNwZWMuanM6CisgICAgICAgIChm
bi5hc3luYyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJh
dGlvbi9yZW5kZXJpbmcvZHJhdy5zcGVjLmpzOgorICAgICAgICAoOS51bmRlZmluZWQuZm4uYXN5
bmMgdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24v
cmVzb3VyY2VfaW5pdC9idWZmZXIuc3BlYy5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZXNvdXJjZV9pbml0L2NoZWNrX3RleHR1cmUvYnlfY29w
eS5qczoKKyAgICAgICAgKGV4cG9ydC5jb25zdC5jaGVja0NvbnRlbnRzQnlCdWZmZXJDb3B5KToK
KyAgICAgICAgKGV4cG9ydC5jb25zdC5jaGVja0NvbnRlbnRzQnlUZXh0dXJlQ29weSk6CisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVzb3VyY2VfaW5p
dC9jaGVja190ZXh0dXJlL2J5X2RzX3Rlc3QuanM6CisgICAgICAgIChjb25zdC5jaGVja0NvbnRl
bnRzKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9y
ZXNvdXJjZV9pbml0L2NoZWNrX3RleHR1cmUvYnlfc2FtcGxpbmcuanM6CisgICAgICAgIChleHBv
cnQuY29uc3QuY2hlY2tDb250ZW50c0J5U2FtcGxpbmcpOgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3Jlc291cmNlX2luaXQvdGV4dHVyZV96ZXJvLnNw
ZWMuanM6CisgICAgICAgIChleHBvcnQuVGV4dHVyZVplcm9Jbml0VGVzdC5wcm90b3R5cGUuaW5p
dGlhbGl6ZVdpdGhTdG9yZU9wKToKKyAgICAgICAgKGV4cG9ydC5UZXh0dXJlWmVyb0luaXRUZXN0
LnByb3RvdHlwZS5kaXNjYXJkVGV4dHVyZSk6CisgICAgICAgIChleHBvcnQuVGV4dHVyZVplcm9J
bml0VGVzdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRp
b24vc2FtcGxpbmcvYW5pc290cm9weS5zcGVjLmpzOgorICAgICAgICAoU2FtcGxlckFuaXNvdHJv
cGljRmlsdGVyaW5nU2xhbnRlZFBsYW5lVGVzdC5wcm90b3R5cGUuYXN5bmMgaW5pdCk6CisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdGV4dHVyZV92aWV3
L2Zvcm1hdF9yZWludGVycHJldGF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdGV4dHVyZV92aWV3L2Zvcm1h
dF9yZWludGVycHJldGF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3RleHR1cmVfdmlldy9mb3JtYXRfcmVpbnRlcnByZXRh
dGlvbi5zcGVjLmpzOiBBZGRlZC4KKyAgICAgICAgKG1ha2VJbnB1dFRleGVsVmlldyk6CisgICAg
ICAgICh2aWV3Rm9ybWF0LmZuLmFzeW5jIHQpOgorICAgICAgICAoNC5mbi5hc3luYyB0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3Zp
ZXcvcmVhZC5zcGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
b3BlcmF0aW9uL3RleHR1cmVfdmlldy93cml0ZS5zcGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3ZlcnRleF9zdGF0ZS9jb3JyZWN0bmVzcy5z
cGVjLmpzOgorICAgICAgICAocHJvdG90eXBlLm1ha2VUZXN0V0dTTCk6CisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2F0dGFjaG1lbnRfY29tcGF0aWJp
bGl0eS5zcGVjLmpzOgorICAgICAgICAoRi5wcm90b3R5cGUuY3JlYXRlQ29sb3JBdHRhY2htZW50
KToKKyAgICAgICAgKEYucHJvdG90eXBlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKToKKyAgICAgICAg
KEYpOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuZmlsdGVyLnAucC5mb3JtYXQuZGVw
dGhTdGVuY2lsSW5mby5zdGVuY2lsKToKKyAgICAgICAgKGZuLmFzeW5jIHQpOgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9idWZmZXIvY3JlYXRlLnNw
ZWMuanM6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9u
L2NyZWF0ZUJpbmRHcm91cC5zcGVjLmpzOgorICAgICAgICAoZmFsc2UuZm4uYXN5bmMgdCk6Cisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZUJp
bmRHcm91cExheW91dC5zcGVjLmpzOgorICAgICAgICAocHJvdG90eXBlLmFzeW5jIGcpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9j
cmVhdGVDb21wdXRlUGlwZWxpbmUuc3BlYy5qczoKKyAgICAgICAgKG1ha2luZy5zdXJlLnRoYXQu
dGhlLnRlc3Qud29ya2luZyk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2Fw
aS92YWxpZGF0aW9uL2NyZWF0ZVJlbmRlclBpcGVsaW5lLnNwZWMuanM6CisgICAgICAgIChmYWxz
ZS5mbi5hc3luYyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3Zh
bGlkYXRpb24vY3JlYXRlVGV4dHVyZS5zcGVjLmpzOgorICAgICAgICAoZm9ybWF0LnVubGVzcyk6
CisgICAgICAgICgyLmZuLmFzeW5jIHQpOgorICAgICAgICAoZm4uYXN5bmMgdCk6CisgICAgICAg
IChmb3JtYXQuZm4uYXN5bmMgdCk6CisgICAgICAgIChrVGV4dHVyZUZvcm1hdHMuZm4uYXN5bmMg
dCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2Ny
ZWF0ZVZpZXcuc3BlYy5qczoKKyAgICAgICAgKHRydWUuZm4uYXN5bmMgdCk6CisgICAgICAgIChr
VGV4dHVyZUZvcm1hdHMuZm4uYXN5bmMgdCk6IERlbGV0ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2JlZ2luUmVuZGVyUGFzcy5z
cGVjLmpzOgorICAgICAgICAoZmFsc2UuZm4uYXN5bmMgdCk6CisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvYnVmZmVyX3RleHR1
cmVfY29waWVzLnNwZWMuanM6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5mbi5hc3lu
YyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24v
ZW5jb2RpbmcvY21kcy9jbGVhckJ1ZmZlci5zcGVjLmpzOgorICAgICAgICAoa1Jlc291cmNlU3Rh
dGVzLmZuLmFzeW5jIHQpOgorICAgICAgICAoZmFsc2UuZm4uYXN5bmMgdCk6CisgICAgICAgIChn
LnRlc3Quc3RyaW5nX2FwcGVhcmVkX2hlcmUuZGVzYy5UZXN0LnRoYXQuY2xlYXJpbmcuYW4uZXJy
b3IuYnVmZmVyLmZhaWxzLmZuLmFzeW5jIHQpOiBEZWxldGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL2NvbXB1dGVfcGFz
cy5zcGVjLmpzOgorICAgICAgICAoZmFsc2UuZm4uYXN5bmMgdCk6CisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvY29weUJ1ZmZl
clRvQnVmZmVyLnNwZWMuanM6CisgICAgICAgIChGLnByb3RvdHlwZS5UZXN0Q29weUJ1ZmZlclRv
QnVmZmVyKToKKyAgICAgICAgKEYpOgorICAgICAgICAoa1Jlc291cmNlU3RhdGVzLmZuLmFzeW5j
IHQpOgorICAgICAgICAoZm4uYXN5bmMgdCk6CisgICAgICAgIChrQnVmZmVyVXNhZ2VzLmZuLmFz
eW5jIHQpOgorICAgICAgICAoZy50ZXN0LnN0cmluZ19hcHBlYXJlZF9oZXJlLmZuLmFzeW5jIHQp
OiBEZWxldGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRh
dGlvbi9lbmNvZGluZy9jbWRzL2NvcHlUZXh0dXJlVG9UZXh0dXJlLnNwZWMuanM6CisgICAgICAg
IChmbi5hc3luYyB0KToKKyAgICAgICAgKGtUZXh0dXJlRm9ybWF0cy5mbi5hc3luYyB0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2Rpbmcv
Y21kcy9yZW5kZXIvaW5kaXJlY3RfZHJhdy5zcGVjLmpzOgorICAgICAgICAoZmFsc2UuZm4uYXN5
bmMgdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9u
L2VuY29kaW5nL2NtZHMvcmVuZGVyL3NldEluZGV4QnVmZmVyLnNwZWMuanM6CisgICAgICAgIChm
YWxzZS5mbi5hc3luYyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9yZW5kZXIvc2V0UGlwZWxpbmUuc3BlYy5qczoKKyAg
ICAgICAgKGZhbHNlLmZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zZXRWZXJ0ZXhCdWZmZXIu
c3BlYy5qczoKKyAgICAgICAgKGZhbHNlLmZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zdGF0
ZV90cmFja2luZy5zcGVjLmpzOgorICAgICAgICAoRi5wcm90b3R5cGUuY3JlYXRlUmVuZGVyUGlw
ZWxpbmUpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlv
bi9lbmNvZGluZy9jbWRzL3NldEJpbmRHcm91cC5zcGVjLmpzOgorICAgICAgICAoZmFsc2UuZm4u
YXN5bmMgdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0
aW9uL2VuY29kaW5nL3Byb2dyYW1tYWJsZS9waXBlbGluZV9iaW5kX2dyb3VwX2NvbXBhdC5zcGVj
LmpzOgorICAgICAgICAoRi5wcm90b3R5cGUuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lV2l0aExheW91
dCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2Vu
Y29kaW5nL3F1ZXJpZXMvZ2VuZXJhbC5zcGVjLmpzOgorICAgICAgICAoZmFsc2UuZm4uYXN5bmMg
dCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2Vu
Y29kaW5nL3F1ZXJpZXMvcmVzb2x2ZVF1ZXJ5U2V0LnNwZWMuanM6CisgICAgICAgIChnLnRlc3Qu
c3RyaW5nX2FwcGVhcmVkX2hlcmUuZGVzYy5UZXN0cy50aGF0LnJlc29sdmUucXVlcnkuc2V0IG11
c3QuYmUud2l0aC52YWxpZC5xdWVyeS5zZXQgYW5kKToKKyAgICAgICAgKGcudGVzdC5zdHJpbmdf
YXBwZWFyZWRfaGVyZS5kZXNjLlRlc3RzLnRoYXQucmVzb2x2ZS5xdWVyeS5zZXQgbXVzdCk6Cisg
ICAgICAgIChrUmVzb3VyY2VTdGF0ZXMuZm4uYXN5bmMgdCk6CisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL3JlbmRlcl9idW5kbGUuc3Bl
Yy5qczoKKyAgICAgICAgKGZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9pbWFnZV9jb3B5L2J1ZmZlcl9yZWxhdGVkLnNwZWMuanM6
CisgICAgICAgIChrUmVzb3VyY2VTdGF0ZXMuZm4uYXN5bmMgdCk6CisgICAgICAgIChmYWxzZS5m
bi5hc3luYyB0KToKKyAgICAgICAgKGZuLmFzeW5jIHQpOgorICAgICAgICAoYnl0ZXNQZXJSb3cu
dW5kZWZpbmVkLmNvcHlIZWlnaHRJbkJsb2Nrcy4xLmJ5dGVzUGVyUm93LnVuZGVmaW5lZC5ieXRl
c1BlclJvdy5rVGV4dHVyZUZvcm1hdEluZm8uZm9ybWF0LmJ5dGVzUGVyQmxvY2suZm4uYXN5bmMg
dCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2lt
YWdlX2NvcHkvaW1hZ2VfY29weS5qczoKKyAgICAgICAgKGV4cG9ydC5JbWFnZUNvcHlUZXN0LnBy
b3RvdHlwZS50ZXN0QnVmZmVyKToKKyAgICAgICAgKGV4cG9ydC5JbWFnZUNvcHlUZXN0KToKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vaW1hZ2VfY29w
eS9sYXlvdXRfcmVsYXRlZC5zcGVjLmpzOgorICAgICAgICAoZm4uYXN5bmMgdCk6CisgICAgICAg
ICh1bmxlc3MucC5wLmRpbWVuc2lvbi5zdHJpbmdfYXBwZWFyZWRfaGVyZS5wLmNvcHlIZWlnaHRJ
bkJsb2Nrcy4xLnAuY29weURlcHRoLjEuZm4uYXN5bmMgdCk6IERlbGV0ZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2ltYWdlX2NvcHkvdGV4dHVy
ZV9yZWxhdGVkLnNwZWMuanM6CisgICAgICAgIChmYWxzZS5mbi5hc3luYyB0KToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vcXVldWUvY29weVRvVGV4
dHVyZS9Db3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZS5zcGVjLmpzOgorICAgICAgICAqIGh0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9xdWV1ZS9zdWJtaXQuc3BlYy5qczoK
KyAgICAgICAgKGZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9hcGkvdmFsaWRhdGlvbi9xdWV1ZS93cml0ZUJ1ZmZlci5zcGVjLmpzOgorICAgICAgICAoa1Jl
c291cmNlU3RhdGVzLmZuLmFzeW5jIHQpOgorICAgICAgICAoZy50ZXN0LnN0cmluZ19hcHBlYXJl
ZF9oZXJlLmRlc2MuVGVzdHMudGhhdC50aGUuZGF0YS5yYW5nZXMuZ2l2ZW4udG8uR1BVUXVldWUu
d3JpdGVCdWZmZXIuYXJlLnByb3Blcmx5LnZhbGlkYXRlZC5UZXN0cy5jYWxsaW5nLndyaXRlQnVm
ZmVyLndpdGguYm90aC5UeXBlZEFycmF5cy5hbmQuQXJyYXlCdWZmZXJzLmFuZC5jaGVja3MudGhh
dC50aGUuZGF0YS5vZmZzZXQuYW5kLnNpemUuaXMuaW50ZXJwcmV0ZWQuY29ycmVjdGx5LmJvdGgu
V2hlbi5wYXNzaW5nLmEuVHlwZWRBcnJheS50aGUuZGF0YS5vZmZzZXQuYW5kLnNpemUuaXMuZ2l2
ZW4uaW4uZWxlbWVudHMuV2hlbi5wYXNzaW5nLmFuLkFycmF5QnVmZmVyLnRoZS5kYXRhLm9mZnNl
dC5hbmQuc2l6ZS5pcy5naXZlbi5pbi5ieXRlcy5BbHNvLnZlcmlmaWVzLnRoYXQudGhlLnNwZWNp
ZmllZC5kYXRhLnJhbmdlLkRlc2NyaWJlcy5hLnZhbGlkLnJhbmdlLm9mLnRoZS5kZXN0aW5hdGlv
bi5idWZmZXIuYW5kLnNvdXJjZS5idWZmZXIuRml0cy5mdWxseS53aXRoaW4udGhlLmRlc3RpbmF0
aW9uLmJ1ZmZlci5IYXMuYS5ieXRlLnNpemUuaXMuYS5tdWx0aXBsZS5vZi40LmZuLmFzeW5jIHQu
cnVuVGVzdCk6CisgICAgICAgIChnLnRlc3Quc3RyaW5nX2FwcGVhcmVkX2hlcmUuZGVzYy5UZXN0
cy50aGF0LnRoZS5kYXRhLnJhbmdlcy5naXZlbi50by5HUFVRdWV1ZS53cml0ZUJ1ZmZlci5hcmUu
cHJvcGVybHkudmFsaWRhdGVkLlRlc3RzLmNhbGxpbmcud3JpdGVCdWZmZXIud2l0aC5ib3RoLlR5
cGVkQXJyYXlzLmFuZC5BcnJheUJ1ZmZlcnMuYW5kLmNoZWNrcy50aGF0LnRoZS5kYXRhLm9mZnNl
dC5hbmQuc2l6ZS5pcy5pbnRlcnByZXRlZC5jb3JyZWN0bHkuYm90aC5XaGVuLnBhc3NpbmcuYS5U
eXBlZEFycmF5LnRoZS5kYXRhLm9mZnNldC5hbmQuc2l6ZS5pcy5naXZlbi5pbi5lbGVtZW50cy5X
aGVuLnBhc3NpbmcuYW4uQXJyYXlCdWZmZXIudGhlLmRhdGEub2Zmc2V0LmFuZC5zaXplLmlzLmdp
dmVuLmluLmJ5dGVzLkFsc28udmVyaWZpZXMudGhhdC50aGUuc3BlY2lmaWVkLmRhdGEucmFuZ2Uu
RGVzY3JpYmVzLmEudmFsaWQucmFuZ2Uub2YudGhlLmRlc3RpbmF0aW9uLmJ1ZmZlci5hbmQuc291
cmNlLmJ1ZmZlci5GaXRzLmZ1bGx5LndpdGhpbi50aGUuZGVzdGluYXRpb24uYnVmZmVyLkhhcy5h
LmJ5dGUuc2l6ZS5pcy5hLm11bHRpcGxlLm9mLjQuZm4uYXN5bmMgdCk6CisgICAgICAgIChmYWxz
ZS5mbi5hc3luYyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3Zh
bGlkYXRpb24vcmVuZGVyX3Bhc3NfZGVzY3JpcHRvci5zcGVjLmpzOgorICAgICAgICAodHJ1ZS5m
bi5hc3luYyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlk
YXRpb24vcmVzb3VyY2VfdXNhZ2VzL3RleHR1cmUvaW5fcGFzc19lbmNvZGVyLnNwZWMuanM6Cisg
ICAgICAgICh1bmxlc3MucC5rVGV4dHVyZUZvcm1hdEluZm8ucC5mb3JtYXQuZGVwdGgua1RleHR1
cmVGb3JtYXRJbmZvLnAuZm9ybWF0LnN0ZW5jaWwucC5hc3BlY3QwLnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnAudHlwZTAuc3RyaW5nX2FwcGVhcmVkX2hlcmUucC5hc3BlY3QxLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnAudHlwZTEuc3RyaW5nX2FwcGVhcmVkX2hlcmUudW5sZXNzLnAucC5iaW5kaW5nMUlu
QnVuZGxlLnAudHlwZTEuc3RyaW5nX2FwcGVhcmVkX2hlcmUudW5sZXNzLnAucC5jb21wdXRlLnAu
YmluZGluZzBJbkJ1bmRsZS5wLmJpbmRpbmcxSW5CdW5kbGUucC50eXBlMS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5mbi5hc3luYyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
YXBpL3ZhbGlkYXRpb24vcmVzb3VyY2VfdXNhZ2VzL3RleHR1cmUvaW5fcmVuZGVyX2NvbW1vbi5z
cGVjLmpzOgorICAgICAgICAoRi5wcm90b3R5cGUuY3JlYXRlQmluZEdyb3VwRm9yVGVzdCk6Cisg
ICAgICAgIChGLnByb3RvdHlwZS5pc1JhbmdlTm90T3ZlcmxhcHBlZCk6CisgICAgICAgIChGKToK
KyAgICAgICAgKGZhbHNlLnVubGVzcy50LnQuaW5TYW1lUGFzcy50LmxldmVsMC50LmxldmVsMS5m
bi5hc3luYyB0KToKKyAgICAgICAgKGZhbHNlLmZuLmFzeW5jIHQpOgorICAgICAgICAoZmFsc2Uu
dW5sZXNzLnQudC5pblNhbWVQYXNzLnQuYmFzZUxldmVsMC50LmJhc2VMZXZlbDEuZm4uYXN5bmMg
dCk6IERlbGV0ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxp
ZGF0aW9uL3Jlc291cmNlX3VzYWdlcy90ZXh0dXJlL2luX3JlbmRlcl9taXNjLnNwZWMuanM6Cisg
ICAgICAgIChGLnByb3RvdHlwZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXRGb3JUZXN0KToKKyAgICAg
ICAgKEYucHJvdG90eXBlLmNyZWF0ZUJpbmRHcm91cEZvclRlc3QpOgorICAgICAgICAoRik6Cisg
ICAgICAgIChmYWxzZS5mbi5hc3luYyB0KToKKyAgICAgICAgKHVzYWdlMC5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS51c2FnZTAuc3RyaW5nX2FwcGVhcmVkX2hlcmUudXNhZ2UxLnN0cmluZ19hcHBlYXJl
ZF9oZXJlLnVzYWdlMS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mbi5hc3luYyB0KToKKyAgICAgICAg
KG9yLmRpZmZlcmVudC5zdWJyZXNvdXJjZXMub2YudGhlLnNhbWUudGV4dHVyZS50ZXh0dXJlLnVz
YWdlcy5pbi5jb3BpZXMuYW5kLmluLnJlbmRlci5wYXNzLmNvbnNlY3V0aXZlbHkuc2V0IGJpbmQp
OiBEZWxldGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRh
dGlvbi9zdGF0ZS9kZXZpY2VfbG9zdC9kZXN0cm95LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3N0YXRlL2Rldmlj
ZV9sb3N0L2Rlc3Ryb3kuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL3N0YXRlL2RldmljZV9sb3N0L2Rlc3Ryb3kuc3BlYy5qczog
QWRkZWQuCisgICAgICAgIChEZXZpY2VEZXN0cm95VGVzdHMucHJvdG90eXBlLmFzeW5jIGV4ZWN1
dGVBZnRlckRlc3Ryb3kpOgorICAgICAgICAoRGV2aWNlRGVzdHJveVRlc3RzLnByb3RvdHlwZS5h
c3luYyBleGVjdXRlQ29tbWFuZHNBZnRlckRlc3Ryb3kpOgorICAgICAgICAoRGV2aWNlRGVzdHJv
eVRlc3RzKToKKyAgICAgICAgKGZhbHNlLmZpbHRlcik6CisgICAgICAgIChmYWxzZS5mbi5hc3lu
YyB0KToKKyAgICAgICAgKGZuLmFzeW5jIHQpOgorICAgICAgICAoZy50ZXN0LnN0cmluZ19hcHBl
YXJlZF9oZXJlLmRlc2MuVGVzdHMuY3JlYXRpbmcuYmluZC5ncm91cC5vbi5kZXN0cm95ZWQuZGV2
aWNlLlRlc3RzLnZhbGlkLmNvbWJpbmF0aW9ucy5vZi5WYXJpb3VzLmJpbmRlZC5yZXNvdXJjZS50
eXBlcy5WYXJpb3VzLnZhbGlkLmJpbmRpbmcuZW50cmllcy5NYXhpbXVtLnNldCBvZik6CisgICAg
ICAgIChnLnRlc3Quc3RyaW5nX2FwcGVhcmVkX2hlcmUuZGVzYy5UZXN0cy5jcmVhdGluZy5iaW5k
Lmdyb3VwLmxheW91dHMub24uZGVzdHJveWVkLmRldmljZS5UZXN0cy52YWxpZC5jb21iaW5hdGlv
bnMub2YuVmFyaW91cy52YWxpZC5iaW5kaW5nLmVudHJpZXMuTWF4aW11bS5zZXQgb2YpOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi92YWxpZGF0aW9u
X3Rlc3QuanM6CisgICAgICAgIChleHBvcnQuVmFsaWRhdGlvblRlc3QucHJvdG90eXBlLmdldE5v
T3BTaGFkZXJDb2RlKToKKyAgICAgICAgKGV4cG9ydC5WYWxpZGF0aW9uVGVzdC5wcm90b3R5cGUu
Y3JlYXRlTm9PcFJlbmRlclBpcGVsaW5lKToKKyAgICAgICAgKGV4cG9ydC5WYWxpZGF0aW9uVGVz
dC5wcm90b3R5cGUuY3JlYXRlTm9PcENvbXB1dGVQaXBlbGluZSk6CisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3ZlcnRleF9zdGF0ZS5zcGVjLmpzOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9jYXBhYmlsaXR5X2luZm8uanM6Cisg
ICAgICAgIChleHBvcnQucmVzb2x2ZVBlckFzcGVjdEZvcm1hdCk6CisgICAgICAgIChleHBvcnQu
dmlld0NvbXBhdGlibGUpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9jb25z
dGFudHMuanM6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2dwdV90ZXN0Lmpz
OgorICAgICAgICAoZXhwb3J0LkdQVVRlc3QucHJvdG90eXBlLmV4cGVjdFNpbmdsZUNvbG9yKToK
KyAgICAgICAgKGV4cG9ydC5HUFVUZXN0LnByb3RvdHlwZS5yZWFkU2luZ2xlUGl4ZWxGcm9tMkRU
ZXh0dXJlKToKKyAgICAgICAgKGV4cG9ydC5HUFVUZXN0LnByb3RvdHlwZS5hc3luYyBleHBlY3RE
ZXZpY2VMb3N0KToKKyAgICAgICAgKGV4cG9ydC5HUFVUZXN0LnByb3RvdHlwZS5tYWtlVGV4dHVy
ZVdpdGhDb250ZW50cyk6CisgICAgICAgIChleHBvcnQuR1BVVGVzdC5wcm90b3R5cGUuY3JlYXRl
RW5jb2Rlcik6CisgICAgICAgIChleHBvcnQuR1BVVGVzdCk6CisgICAgICAgIChleHBvcnQuR1BV
VGVzdC5wcm90b3R5cGUuYXN5bmMgbWFrZUJ1ZmZlcldpdGhDb250ZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2xpc3RpbmcuanM6CisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXZhbHVhdGlvbl9vcmRl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9zaGFkZXIvZXhlY3V0aW9uL2V2YWx1YXRpb25fb3JkZXIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXZhbHVhdGlvbl9v
cmRlci5zcGVjLmpzOiBBZGRlZC4KKyAgICAgICAgKHJ1bik6CisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2Fy
aXRobWV0aWMuc3BlYy5qczoKKyAgICAgICAgKGNhbGN1bGF0ZVJlc3VsdHMpOgorICAgICAgICAo
bWFrZUNhc2VJbXBsKToKKyAgICAgICAgKDQuZm4uYXN5bmMgdCk6CisgICAgICAgIChmdWxsTnVt
ZXJpY1JhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
c2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2JpbmFyeS9mMzJfbG9naWNhbC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhl
Y3V0aW9uL2V4cHJlc3Npb24vYmluYXJ5L2YzMl9sb2dpY2FsLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24v
YmluYXJ5L2YzMl9sb2dpY2FsLnNwZWMuanM6IEFkZGVkLgorICAgICAgICAobWFrZUNhc2UpOgor
ICAgICAgICAoNC5mbi5hc3luYyB0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9hdGFuLnNwZWMuanM6
CisgICAgICAgICg0LmZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2F0YW4yLnNwZWMu
anM6CisgICAgICAgICg0LmZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2NsYW1wLnNw
ZWMuanM6CisgICAgICAgIChjYWxjdWxhdGVNaW5NYXhDbGFtcCk6CisgICAgICAgIChjYWxjdWxh
dGVNZWRpYW5DbGFtcCk6CisgICAgICAgIChnZW5lcmF0ZUludGVnZXJUZXN0Q2FzZXMpOgorICAg
ICAgICAoZ2VuZXJhdGVGbG9hdFRlc3RDYXNlcyk6CisgICAgICAgICg0LmZuLmFzeW5jIHQpOgor
ICAgICAgICAoZ2VuZXJhdGVUZXN0Q2FzZXMpOiBEZWxldGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGlu
L2ludmVyc2VzcXJ0LnNwZWMuanM6CisgICAgICAgICg0LmZuLmFzeW5jIHQpOgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2Fs
bC9idWlsdGluL2xkZXhwLnNwZWMuanM6CisgICAgICAgICg0LmZuLmFzeW5jIHQpOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24v
ZXhwcmVzc2lvbi5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVy
L2V4ZWN1dGlvbi9leHByZXNzaW9uL3VuYXJ5L2YzMl9hcml0aG1ldGljLnNwZWMuanM6CisgICAg
ICAgICg0LmZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9z
aGFkZXIvZXhlY3V0aW9uL21lbW9yeV9tb2RlbC9tZW1vcnlfbW9kZWxfc2V0dXAuanM6CisgICAg
ICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vcm9idXN0X2Fj
Y2Vzcy5zcGVjLmpzOgorICAgICAgICAocnVuU2hhZGVyVGVzdCk6CisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vcm9idXN0X2FjY2Vzc192ZXJ0ZXgu
c3BlYy5qczoKKyAgICAgICAgKEYucHJvdG90eXBlLmdlbmVyYXRlVmVydGV4U2hhZGVyQ29kZSk6
CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vc2Ft
cGxpbmcvZ3JhZGllbnRzX2luX3ZhcnlpbmdfbG9vcC5zcGVjLmpzOgorICAgICAgICAoRGVyaXZh
dGl2ZXNUZXN0LnByb3RvdHlwZS5hc3luYyBpbml0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9zaGFkZXJfaW8vY29tcHV0ZV9idWlsdGlucy5z
cGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0
aW9uL3NoYWRlcl9pby9zaGFyZWRfc3RydWN0cy5zcGVjLmpzOgorICAgICAgICAoYW5kLnRoZS5s
YXlvdXQuYXR0cmlidXRlcy5zaG91bGQuYmUuaWdub3JlZC53aGVuLnVzZWQuYXMuYW4uZW50cnku
cG9pbnQuSU8ucGFyYW1ldGVyLmZuLmFzeW5jIHQpOgorICAgICAgICAoYW5kLnVzZXMuaXQuYXMu
Ym90aC50aGUub3V0cHV0Lm9mLmEudmVydGV4LnNoYWRlci5hbmQudGhlLmlucHV0LnRvLmEuZnJh
Z21lbnQuc2hhZGVyLmZuLmFzeW5jIHQpOgorICAgICAgICAoYW5kLnVzZXMudGhvc2Uuc3RydWN0
dXJlcy5hcy5wYXJhbWV0ZXIuYW5kLnJldHVybi50eXBlcy5lbnRyeS5wb2ludC5mdW5jdGlvbnMu
YW5kLnJlZ3VsYXIuZnVuY3Rpb25zLmZuLmFzeW5jIHQpOgorICAgICAgICAqIGh0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL3plcm9faW5pdC5zcGVjLmpzOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdHlwZXMuanM6CisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3NoYWRlcl9pby9idWls
dGlucy5zcGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIv
dmFsaWRhdGlvbi9zaGFkZXJfaW8vZ2VuZXJpYy5zcGVjLmpzOgorICAgICAgICAqIGh0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vaW52YXJpYW50LnNw
ZWMuanM6CisgICAgICAgIChmYWxzZS5iZWdpblN1YmNhc2VzLmZuLnQuY29uc3QuY29kZS5zdHJ1
Y3QuVmVydGV4T3V0LmxvY2F0aW9uKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvc2hhZGVyL3ZhbGlkYXRpb24vc2hhZGVyX2lvL2xvY2F0aW9ucy5zcGVjLmpzOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8v
dXRpbC5qczoKKyAgICAgICAgKGV4cG9ydC5nZW5lcmF0ZVNoYWRlcik6CisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3Rva2Vucy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFs
aWRhdGlvbi90b2tlbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3Rva2Vucy5zcGVjLmpzOiBBZGRlZC4KKyAgICAgICAg
KHN0cmluZ19hcHBlYXJlZF9oZXJlLmJlZ2luU3ViY2FzZXMuZm4udC5lbHNlKToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL3ZhbGlkYXRpb24vdmFyaWFibGVfYW5k
X2NvbnN0LnNwZWMuanM6CisgICAgICAgIChmbi50LnByb3RvdHlwZS5lbHNlKToKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jaGVja19jb250ZW50cy5qczoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb2xvcl9zcGFjZV9jb252ZXJzaW9u
LmpzOgorICAgICAgICAoWFlaX3RvX2xpbl9zUkdCKToKKyAgICAgICAgKGxpbl9QM190b19YWVop
OgorICAgICAgICAoWFlaX3RvX2xpbl9QMyk6CisgICAgICAgIChleHBvcnQubWFrZUluUGxhY2VD
b2xvckNvbnZlcnNpb24pOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGls
L2NvbW1hbmRfYnVmZmVyX21ha2VyLmpzOgorICAgICAgICAoZXhwb3J0LkNvbW1hbmRCdWZmZXJN
YWtlcik6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvY29udmVyc2lv
bi5qczoKKyAgICAgICAgKGV4cG9ydC5mbG9hdEFzTm9ybWFsaXplZEludGVnZXIpOgorICAgICAg
ICAoZXhwb3J0LmZsb2F0MzJUb0Zsb2F0Qml0cyk6CisgICAgICAgIChleHBvcnQubnVtYmVyVG9G
bG9hdEJpdHMpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2NvcHlf
dG9fdGV4dHVyZS5qczoKKyAgICAgICAgKGV4cG9ydC5Db3B5VG9UZXh0dXJlVXRpbHMucHJvdG90
eXBlLmdldEV4cGVjdGVkUGl4ZWxzKToKKyAgICAgICAgKGV4cG9ydC5Db3B5VG9UZXh0dXJlVXRp
bHMucHJvdG90eXBlLmRvVGVzdEFuZENoZWNrUmVzdWx0KToKKyAgICAgICAgKGV4cG9ydC5Db3B5
VG9UZXh0dXJlVXRpbHMpOgorICAgICAgICAoaXNGcDE2Rm9ybWF0KTogRGVsZXRlZC4KKyAgICAg
ICAgKGlzRnAzMkZvcm1hdCk6IERlbGV0ZWQuCisgICAgICAgIChpc1Vub3JtRm9ybWF0KTogRGVs
ZXRlZC4KKyAgICAgICAgKGV4cG9ydC5Db3B5VG9UZXh0dXJlVXRpbHMucHJvdG90eXBlLmZvcm1h
dEZvckV4cGVjdGVkUGl4ZWxzKTogRGVsZXRlZC4KKyAgICAgICAgKGV4cG9ydC5Db3B5VG9UZXh0
dXJlVXRpbHMucHJvdG90eXBlLmdldFNvdXJjZUltYWdlQml0bWFwUGl4ZWxzKTogRGVsZXRlZC4K
KyAgICAgICAgKGV4cG9ydC5Db3B5VG9UZXh0dXJlVXRpbHMucHJvdG90eXBlLmNoZWNrQ29weUV4
dGVybmFsSW1hZ2VSZXN1bHQpOiBEZWxldGVkLgorICAgICAgICAoZXhwb3J0LkNvcHlUb1RleHR1
cmVVdGlscy5wcm90b3R5cGUuYXN5bmMgY2hlY2tCdWZmZXJXaXRoUm93UGl0Y2gpOiBEZWxldGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2NyZWF0ZV9lbGVtZW50
cy5qczoKKyAgICAgICAgKGV4cG9ydC5jYW5Db3B5RnJvbUNhbnZhc0NvbnRleHQpOgorICAgICAg
ICAoZXhwb3J0LmNyZWF0ZUNhbnZhcyk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2Vi
Z3B1L3V0aWwvZGV2aWNlX3Bvb2wuanM6CisgICAgICAgIChleHBvcnQuRGV2aWNlUG9vbC5wcm90
b3R5cGUuYXN5bmMgcmVzZXJ2ZSk6CisgICAgICAgIChleHBvcnQuRGV2aWNlUG9vbC5wcm90b3R5
cGUuYXN5bmMgcmVsZWFzZSk6CisgICAgICAgIChleHBvcnQuRGV2aWNlUG9vbCk6CisgICAgICAg
IChjYW5vbmljYWxpemVEZXNjcmlwdG9yKToKKyAgICAgICAgKERldmljZUhvbGRlci5wcm90b3R5
cGUuZXhwZWN0RGV2aWNlTG9zdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3V0aWwvbWF0aC5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC90
ZXh0dXJlLmpzOiBBZGRlZC4KKyAgICAgICAgKGV4cG9ydC5tYWtlVGV4dHVyZVdpdGhDb250ZW50
cyk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS9sYXlv
dXQuanM6CisgICAgICAgIChleHBvcnQuZ2V0VGV4dHVyZUNvcHlMYXlvdXQpOgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL3RleHR1cmUvdGV4ZWxfZGF0YS5qczoKKyAg
ICAgICAgKGV4cG9ydC5tYWtlQ2xhbXBUb1JhbmdlKToKKyAgICAgICAgKHVucGFja0NvbXBvbmVu
dHNCaXRzKToKKyAgICAgICAgKG1ha2VOb3JtYWxpemVkSW5mbyk6CisgICAgICAgIChtYWtlSW50
ZWdlckluZm8pOgorICAgICAgICAobWFrZUZsb2F0SW5mbyk6CisgICAgICAgIChwYWNrQ29tcG9u
ZW50cyk6IERlbGV0ZWQuCisgICAgICAgIChleHBvcnQuY29uc3Qua1RleGVsUmVwcmVzZW50YXRp
b25JbmZvLnJnYmEzMmZsb2F0Lm1ha2VGbG9hdEluZm8pOiBEZWxldGVkLgorICAgICAgICAoZXhw
b3J0LmdldFNpbmdsZURhdGFUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKGV4cG9ydC5nZXRDb21w
b25lbnRSZWFkYmFja1RyYWl0cyk6IERlbGV0ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS90ZXhlbF92aWV3LmpzOiBBZGRlZC4KKyAgICAgICAgKGV4
cG9ydC5UZXhlbFZpZXcucHJvdG90eXBlLmZyb21UZXh0dXJlRGF0YUJ5UmVmZXJlbmNlKToKKyAg
ICAgICAgKGV4cG9ydC5UZXhlbFZpZXcuZnJvbVRleGVsc0FzQnl0ZXMpOgorICAgICAgICAoZXhw
b3J0LlRleGVsVmlldy5wcm90b3R5cGUuZnJvbVRleGVsc0FzQ29sb3JzKToKKyAgICAgICAgKGV4
cG9ydC5UZXhlbFZpZXcucHJvdG90eXBlLndyaXRlVGV4dHVyZURhdGEpOgorICAgICAgICAoZXhw
b3J0LlRleGVsVmlldyk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwv
dGV4dHVyZS90ZXh0dXJlX29rLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS90ZXh0dXJlX29rLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL3RleHR1cmUvdGV4dHVyZV9v
ay5qczogQWRkZWQuCisgICAgICAgIChtYWtlVGV4ZWxWaWV3Q29tcGFyZXIpOgorICAgICAgICAo
bWFrZVRleGVsVmlld0NvbXBhcmVyLik6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2Vi
Z3B1L3V0aWwvdGV4dHVyZS90ZXh0dXJlX29rLnNwZWMuanM6IEFkZGVkLgorICAgICAgICAoZm4u
YXN5bmMgdCk6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3dlYl9wbGF0Zm9y
bS9jYW52YXMvcmVhZGJhY2tGcm9tV2ViR1BVQ2FudmFzLnNwZWMuanM6CisgICAgICAgIChhbGxD
YW52YXNUeXBlcy5mbi5hc3luYyB0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvd2ViX3BsYXRmb3JtL2NvcHlUb1RleHR1cmUvSW1hZ2VCaXRtYXAuc3BlYy5q
czoKKyAgICAgICAgKG1ha2VUZXN0Q29sb3JzVGV4ZWxWaWV3KToKKyAgICAgICAgKEYucHJvdG90
eXBlLmdlbmVyYXRlUGl4ZWwpOiBEZWxldGVkLgorICAgICAgICAoRi5wcm90b3R5cGUuZ2V0SW1h
Z2VQaXhlbHMpOiBEZWxldGVkLgorICAgICAgICAoRik6IERlbGV0ZWQuCisgICAgICAgIChmbi5h
c3luYyB0KTogRGVsZXRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvd2Vi
X3BsYXRmb3JtL2NvcHlUb1RleHR1cmUvY2FudmFzLnNwZWMuanM6CisgICAgICAgIChGLnByb3Rv
dHlwZS5pbml0MkRDYW52YXNDb250ZW50V2l0aENvbG9yU3BhY2UpOgorICAgICAgICAoRi5wcm90
b3R5cGUuaW5pdDJEQ2FudmFzQ29udGVudCk6CisgICAgICAgIChGLnByb3RvdHlwZS5pbml0R0xD
YW52YXNDb250ZW50KToKKyAgICAgICAgKEYucHJvdG90eXBlLmdldEluaXRHUFVDYW52YXNEYXRh
KToKKyAgICAgICAgKEYucHJvdG90eXBlLmluaXRHUFVDYW52YXNDb250ZW50KToKKyAgICAgICAg
KEYucHJvdG90eXBlLmNhbGN1bGF0ZVNvdXJjZUNvbnRlbnRPbkNQVSk6CisgICAgICAgIChGKToK
KyAgICAgICAgKGZuLmFzeW5jIHQpOgorICAgICAgICAoRi5wcm90b3R5cGUuZ2V0VGVzdEltYWdl
VVJMQnlDb2xvclNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MtZGV2aWNl
LXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy1zaW11bGF0b3It
d2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIyLTA0LTE1ICBNYXR0ZW8gRmxvcmVzICA8bWF0dGVvX2Zsb3Jlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUkVCQVNMSU5FOiBbIE1vbnRlcmV5IHdrMiBdIDcgL3BheW1l
bnRyZXF1ZXN0LyogdGVzdHMgYXJlIGNvbnN0YW50IHRleHQgZmFpbHVyZXMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L2NvbW1vbi9mcmFtZXdvcmsvZml4dHVyZS5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L2NvbW1vbi9mcmFtZXdvcmsvZml4dHVy
ZS5qcwppbmRleCAxZDZhMjZmODBiZGYuLjc0ZWZmZjVlYzNkOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvY29tbW9uL2ZyYW1ld29yay9maXh0dXJlLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L2NvbW1vbi9mcmFtZXdvcmsvZml4dHVyZS5q
cwpAQCAtMjM3LDcgKzIzNyw3IEBAIGV4cG9ydCBjbGFzcyBGaXh0dXJlIHsKICAgICByZXR1cm4g
Y29uZDsKICAgfQogCi0gIC8qKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gRXJyb3IsIGZhaWwgKG9y
IHdhcm4pLiBPdGhlcndpc2UsIG5vLW9wLiAqLworICAvKiogSWYgdGhlIGFyZ3VtZW50IGlzIGFu
IGBFcnJvcmAsIGZhaWwgKG9yIHdhcm4pLiBJZiBpdCdzIGB1bmRlZmluZWRgLCBuby1vcC4gKi8K
ICAgZXhwZWN0T0soZXJyb3IsIHsgbW9kZSA9ICdmYWlsJywgbmljZVN0YWNrIH0gPSB7fSkgewog
ICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7CiAgICAgICBpZiAobmljZVN0YWNrKSB7
CkBAIC0yNTIsNCArMjUyLDEwIEBAIGV4cG9ydCBjbGFzcyBGaXh0dXJlIHsKICAgICAgIH0KICAg
ICB9CiAgIH0KKworICBldmVudHVhbEV4cGVjdE9LKGVycm9yLCB7IG1vZGUgPSAnZmFpbCcgfSA9
IHt9KSB7CisgICAgdGhpcy5ldmVudHVhbEFzeW5jRXhwZWN0YXRpb24oYXN5bmMgbmljZVN0YWNr
ID0+IHsKKyAgICAgIHRoaXMuZXhwZWN0T0soYXdhaXQgZXJyb3IsIHsgbW9kZSwgbmljZVN0YWNr
IH0pOworICAgIH0pOworICB9CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS9jb21tb24vaW50ZXJuYWwvdmVyc2lvbi5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L2NvbW1vbi9pbnRlcm5hbC92ZXJzaW9uLmpzCmluZGV4IGZjOWUwMTE0ZjI4NS4u
ZGY1ZDUwZmE2ZjQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS9j
b21tb24vaW50ZXJuYWwvdmVyc2lvbi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS9jb21tb24vaW50ZXJuYWwvdmVyc2lvbi5qcwpAQCAtMSwzICsxLDMgQEAKIC8vIEFVVE8t
R0VORVJBVEVEIC0gRE8gTk9UIEVESVQuIFNlZSB0b29scy9nZW5fdmVyc2lvbi4KIAotZXhwb3J0
IGNvbnN0IHZlcnNpb24gPSAnMDlmMDI0ZTUwZTg0ZjE5MWVlNDU0NmVmNDAyMTcwN2ZhYTM3NjA5
Nic7CitleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1NDlkN2MyZjE2MzczMjFhOTI0N2YwYTNhYjAy
MmY5MTllNWNhNWRhJzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L2N0cy5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvY3RzLmh0dHBz
Lmh0bWwKaW5kZXggNzZjNGEyNjBiNDU2Li4xNDQ0ZDhmMTMzMDMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L2N0cy5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L2N0cy5odHRwcy5odG1sCkBAIC04OSwxNCArODksMTUgQEAKIDxt
ZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLG9wZXJhdGlvbixkZXZpY2UsbG9z
dDpsb3N0X29uX2Rlc3Ryb3k6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1
OmFwaSxvcGVyYXRpb24sZGV2aWNlLGxvc3Q6c2FtZV9vYmplY3Q6Kic+CiA8bWV0YSBuYW1lPXZh
cmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSxvcGVyYXRpb24sbGFiZWxzOm9iamVjdF9oYXNfZGVz
Y3JpcHRvcl9sYWJlbDoqJz4KLTxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBp
LG9wZXJhdGlvbixtZW1vcnlfc3luYyxidWZmZXIsd3c6c2FtZV9jbWRidWY6Kic+Ci08bWV0YSBu
YW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSxvcGVyYXRpb24sbWVtb3J5X3N5bmMsYnVm
ZmVyLHd3OnNlcGFyYXRlX2NtZGJ1ZnM6Kic+Ci08bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0n
d2ViZ3B1OmFwaSxvcGVyYXRpb24sbWVtb3J5X3N5bmMsYnVmZmVyLHd3OnNlcGFyYXRlX3N1Ym1p
dHM6Kic+Ci08bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSxvcGVyYXRpb24s
bWVtb3J5X3N5bmMsYnVmZmVyLHd3OnNlcGFyYXRlX3F1ZXVlczoqJz4KLTxtZXRhIG5hbWU9dmFy
aWFudCBjb250ZW50PSd3ZWJncHU6YXBpLG9wZXJhdGlvbixtZW1vcnlfc3luYyxidWZmZXIsd3c6
dHdvX2RyYXdzX2luX3RoZV9zYW1lX3JlbmRlcl9wYXNzOionPgotPG1ldGEgbmFtZT12YXJpYW50
IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcix3dzp0d29f
ZHJhd3NfaW5fdGhlX3NhbWVfcmVuZGVyX2J1bmRsZToqJz4KLTxtZXRhIG5hbWU9dmFyaWFudCBj
b250ZW50PSd3ZWJncHU6YXBpLG9wZXJhdGlvbixtZW1vcnlfc3luYyxidWZmZXIsd3c6dHdvX2Rp
c3BhdGNoZXNfaW5fdGhlX3NhbWVfY29tcHV0ZV9wYXNzOionPgotPG1ldGEgbmFtZT12YXJpYW50
IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcix3dzptdWx0
aXBsZV9idWZmZXJzOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGks
b3BlcmF0aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcixtdWx0aXBsZV9idWZmZXJzOnJ3OionPgorPG1l
dGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLG1lbW9yeV9zeW5j
LGJ1ZmZlcixtdWx0aXBsZV9idWZmZXJzOndyOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcixtdWx0aXBsZV9idWZm
ZXJzOnd3OionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0
aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcixzaW5nbGVfYnVmZmVyOnJ3OionPgorPG1ldGEgbmFtZT12
YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcixz
aW5nbGVfYnVmZmVyOndyOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTph
cGksb3BlcmF0aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcixzaW5nbGVfYnVmZmVyOnd3OionPgorPG1l
dGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLG1lbW9yeV9zeW5j
LGJ1ZmZlcixzaW5nbGVfYnVmZmVyOnR3b19kcmF3c19pbl90aGVfc2FtZV9yZW5kZXJfcGFzczoq
Jz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLG9wZXJhdGlvbixtZW1v
cnlfc3luYyxidWZmZXIsc2luZ2xlX2J1ZmZlcjp0d29fZHJhd3NfaW5fdGhlX3NhbWVfcmVuZGVy
X2J1bmRsZToqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLG9wZXJh
dGlvbixtZW1vcnlfc3luYyxidWZmZXIsc2luZ2xlX2J1ZmZlcjp0d29fZGlzcGF0Y2hlc19pbl90
aGVfc2FtZV9jb21wdXRlX3Bhc3M6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OmFwaSxvcGVyYXRpb24sbWVtb3J5X3N5bmMsdGV4dHVyZSxzYW1lX3N1YnJlc291cmNlOnJ3
OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLG1l
bW9yeV9zeW5jLHRleHR1cmUsc2FtZV9zdWJyZXNvdXJjZTpydyxzaW5nbGVfcGFzcyxsb2FkX3N0
b3JlOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9u
LG1lbW9yeV9zeW5jLHRleHR1cmUsc2FtZV9zdWJyZXNvdXJjZTpydyxzaW5nbGVfcGFzcyxsb2Fk
X3Jlc29sdmU6Kic+CkBAIC0xNzEsNiArMTcyLDggQEAKIDxtZXRhIG5hbWU9dmFyaWFudCBjb250
ZW50PSd3ZWJncHU6YXBpLG9wZXJhdGlvbixzaGFkZXJfbW9kdWxlLGNvbXBpbGF0aW9uX2luZm86
Y29tcGlsYXRpb25JbmZvX3JldHVybnM6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0n
d2ViZ3B1OmFwaSxvcGVyYXRpb24sc2hhZGVyX21vZHVsZSxjb21waWxhdGlvbl9pbmZvOmxpbmVf
bnVtYmVyX2FuZF9wb3NpdGlvbjoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJn
cHU6YXBpLG9wZXJhdGlvbixzaGFkZXJfbW9kdWxlLGNvbXBpbGF0aW9uX2luZm86b2Zmc2V0X2Fu
ZF9sZW5ndGg6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSxvcGVy
YXRpb24sdGV4dHVyZV92aWV3LGZvcm1hdF9yZWludGVycHJldGF0aW9uOnRleHR1cmVfYmluZGlu
ZzoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLG9wZXJhdGlvbix0
ZXh0dXJlX3ZpZXcsZm9ybWF0X3JlaW50ZXJwcmV0YXRpb246cmVuZGVyX2FuZF9yZXNvbHZlX2F0
dGFjaG1lbnQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSxvcGVy
YXRpb24sdGV4dHVyZV92aWV3LHJlYWQ6Zm9ybWF0OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNv
bnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLHRleHR1cmVfdmlldyxyZWFkOmRpbWVuc2lvbjoq
Jz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLG9wZXJhdGlvbix0ZXh0
dXJlX3ZpZXcscmVhZDphc3BlY3Q6Kic+CkBAIC0xOTYsMTEgKzE5OSwxNCBAQAogPG1ldGEgbmFt
ZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksb3BlcmF0aW9uLHZlcnRleF9zdGF0ZSxpbmRl
eF9mb3JtYXQ6cHJpbWl0aXZlX3Jlc3RhcnQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVu
dD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGF0dGFjaG1lbnRfY29tcGF0aWJpbGl0eTpyZW5kZXJf
cGFzc19hbmRfYnVuZGxlLGNvbG9yX2Zvcm1hdDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250
ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sYXR0YWNobWVudF9jb21wYXRpYmlsaXR5OnJlbmRl
cl9wYXNzX2FuZF9idW5kbGUsY29sb3JfY291bnQ6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29u
dGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGF0dGFjaG1lbnRfY29tcGF0aWJpbGl0eTpyZW5k
ZXJfcGFzc19hbmRfYnVuZGxlLGNvbG9yX3NwYXJzZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBj
b250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sYXR0YWNobWVudF9jb21wYXRpYmlsaXR5OnJl
bmRlcl9wYXNzX2FuZF9idW5kbGUsZGVwdGhfZm9ybWF0OionPgogPG1ldGEgbmFtZT12YXJpYW50
IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixhdHRhY2htZW50X2NvbXBhdGliaWxpdHk6
cmVuZGVyX3Bhc3NfYW5kX2J1bmRsZSxzYW1wbGVfY291bnQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlh
bnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGF0dGFjaG1lbnRfY29tcGF0aWJpbGl0
eTpyZW5kZXJfcGFzc19vcl9idW5kbGVfYW5kX3BpcGVsaW5lLGNvbG9yX2Zvcm1hdDoqJz4KIDxt
ZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sYXR0YWNobWVu
dF9jb21wYXRpYmlsaXR5OnJlbmRlcl9wYXNzX29yX2J1bmRsZV9hbmRfcGlwZWxpbmUsY29sb3Jf
Y291bnQ6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0
aW9uLGF0dGFjaG1lbnRfY29tcGF0aWJpbGl0eTpyZW5kZXJfcGFzc19vcl9idW5kbGVfYW5kX3Bp
cGVsaW5lLGNvbG9yX3NwYXJzZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJn
cHU6YXBpLHZhbGlkYXRpb24sYXR0YWNobWVudF9jb21wYXRpYmlsaXR5OnJlbmRlcl9wYXNzX29y
X2J1bmRsZV9hbmRfcGlwZWxpbmUsZGVwdGhfZm9ybWF0OionPgorPG1ldGEgbmFtZT12YXJpYW50
IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixhdHRhY2htZW50X2NvbXBhdGliaWxpdHk6
cmVuZGVyX3Bhc3Nfb3JfYnVuZGxlX2FuZF9waXBlbGluZSxkZXB0aF9zdGVuY2lsX3JlYWRfb25s
eV93cml0ZV9zdGF0ZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBp
LHZhbGlkYXRpb24sYXR0YWNobWVudF9jb21wYXRpYmlsaXR5OnJlbmRlcl9wYXNzX29yX2J1bmRs
ZV9hbmRfcGlwZWxpbmUsc2FtcGxlX2NvdW50OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixidWZmZXIsY3JlYXRlOnNpemU6Kic+CiA8bWV0YSBu
YW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGJ1ZmZlcixjcmVhdGU6
dXNhZ2U6Kic+CkBAIC0yODgsNiArMjk0LDcgQEAKIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50
PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sY3JlYXRlUmVuZGVyUGlwZWxpbmU6cGlwZWxpbmVfb3V0
cHV0X3RhcmdldHMsYmxlbmRfbWluX21heDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50
PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sY3JlYXRlUmVuZGVyUGlwZWxpbmU6cGlwZWxpbmVfbGF5
b3V0LGRldmljZV9taXNtYXRjaDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJn
cHU6YXBpLHZhbGlkYXRpb24sY3JlYXRlUmVuZGVyUGlwZWxpbmU6c2hhZGVyX21vZHVsZSxkZXZp
Y2VfbWlzbWF0Y2g6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2
YWxpZGF0aW9uLGNyZWF0ZVJlbmRlclBpcGVsaW5lOmVudHJ5X3BvaW50X25hbWVfbXVzdF9tYXRj
aDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24s
Y3JlYXRlU2FtcGxlcjpsb2RNaW5BbmRNYXhDbGFtcDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBj
b250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sY3JlYXRlU2FtcGxlcjptYXhBbmlzb3Ryb3B5
OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixj
cmVhdGVUZXh0dXJlOnplcm9fc2l6ZToqJz4KQEAgLTMwNSw2ICszMTIsNyBAQAogPG1ldGEgbmFt
ZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixjcmVhdGVUZXh0dXJlOnRl
eHR1cmVfc2l6ZSwzZF90ZXh0dXJlLHVuY29tcHJlc3NlZF9mb3JtYXQ6Kic+CiA8bWV0YSBuYW1l
PXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGNyZWF0ZVRleHR1cmU6dGV4
dHVyZV9zaXplLDNkX3RleHR1cmUsY29tcHJlc3NlZF9mb3JtYXQ6Kic+CiA8bWV0YSBuYW1lPXZh
cmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGNyZWF0ZVRleHR1cmU6dGV4dHVy
ZV91c2FnZToqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlk
YXRpb24sY3JlYXRlVGV4dHVyZTp2aWV3Rm9ybWF0czoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBj
b250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sY3JlYXRlVmlldzpmb3JtYXQ6Kic+CiA8bWV0
YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGNyZWF0ZVZpZXc6
ZGltZW5zaW9uOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFs
aWRhdGlvbixjcmVhdGVWaWV3OmFzcGVjdDoqJz4KQEAgLTMxOCw3ICszMjYsOCBAQAogPG1ldGEg
bmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxjbWRz
LGJ1ZmZlcl90ZXh0dXJlX2NvcGllczpkZXB0aF9zdGVuY2lsX2Zvcm1hdCxjb3B5X3VzYWdlX2Fu
ZF9hc3BlY3Q6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxp
ZGF0aW9uLGVuY29kaW5nLGNtZHMsYnVmZmVyX3RleHR1cmVfY29waWVzOmRlcHRoX3N0ZW5jaWxf
Zm9ybWF0LGNvcHlfYnVmZmVyX3NpemU6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0n
d2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMsYnVmZmVyX3RleHR1cmVfY29waWVz
OmRlcHRoX3N0ZW5jaWxfZm9ybWF0LGNvcHlfYnVmZmVyX29mZnNldDoqJz4KLTxtZXRhIG5hbWU9
dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxjbGVh
ckJ1ZmZlcjppbnZhbGlkX2J1ZmZlcjoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxjbGVhckJ1ZmZlcjpidWZmZXJfc3Rh
dGU6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9u
LGVuY29kaW5nLGNtZHMsY2xlYXJCdWZmZXI6YnVmZmVyLGRldmljZV9taXNtYXRjaDoqJz4KIDxt
ZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2Rpbmcs
Y21kcyxjbGVhckJ1ZmZlcjpkZWZhdWx0X2FyZ3M6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29u
dGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMsY2xlYXJCdWZmZXI6YnVm
ZmVyX3VzYWdlOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFs
aWRhdGlvbixlbmNvZGluZyxjbWRzLGNsZWFyQnVmZmVyOnNpemVfYWxpZ25tZW50OionPgpAQCAt
MzI4LDkgKzMzNyw5IEBACiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2
YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMsY29tcHV0ZV9wYXNzOnNldF9waXBlbGluZToqJz4KIDxt
ZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2Rpbmcs
Y21kcyxjb21wdXRlX3Bhc3M6cGlwZWxpbmUsZGV2aWNlX21pc21hdGNoOionPgogPG1ldGEgbmFt
ZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxjbWRzLGNv
bXB1dGVfcGFzczpkaXNwYXRjaF9zaXplczoqJz4KLTxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50
PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxjb21wdXRlX3Bhc3M6aW5kaXJl
Y3RfZGlzcGF0Y2hfYnVmZmVyOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdw
dTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxjbWRzLGNvbXB1dGVfcGFzczppbmRpcmVjdF9kaXNw
YXRjaF9idWZmZXJfc3RhdGU6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1
OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMsY29tcHV0ZV9wYXNzOmluZGlyZWN0X2Rpc3Bh
dGNoX2J1ZmZlcixkZXZpY2VfbWlzbWF0Y2g6Kic+Ci08bWV0YSBuYW1lPXZhcmlhbnQgY29udGVu
dD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMsY29weUJ1ZmZlclRvQnVmZmVy
OmNvcHlfd2l0aF9pbnZhbGlkX2J1ZmZlcjoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50
PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxjb3B5QnVmZmVyVG9CdWZmZXI6
YnVmZmVyX3N0YXRlOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGks
dmFsaWRhdGlvbixlbmNvZGluZyxjbWRzLGNvcHlCdWZmZXJUb0J1ZmZlcjpidWZmZXIsZGV2aWNl
X21pc21hdGNoOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFs
aWRhdGlvbixlbmNvZGluZyxjbWRzLGNvcHlCdWZmZXJUb0J1ZmZlcjpidWZmZXJfdXNhZ2U6Kic+
CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGVuY29k
aW5nLGNtZHMsY29weUJ1ZmZlclRvQnVmZmVyOmNvcHlfc2l6ZV9hbGlnbm1lbnQ6Kic+CkBAIC0z
NjcsMTIgKzM3NiwxMiBAQAogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGks
dmFsaWRhdGlvbixlbmNvZGluZyxjbWRzLHJlbmRlcixkeW5hbWljX3N0YXRlOnNldFNjaXNzb3JS
ZWN0LHh5X3JlY3RfY29udGFpbmVkX2luX2F0dGFjaG1lbnQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlh
bnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMscmVuZGVyLGR5
bmFtaWNfc3RhdGU6c2V0QmxlbmRDb25zdGFudDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250
ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxyZW5kZXIsZHluYW1pY19z
dGF0ZTpzZXRTdGVuY2lsUmVmZXJlbmNlOionPgotPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9
J3dlYmdwdTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxjbWRzLHJlbmRlcixpbmRpcmVjdF9kcmF3
OmluZGlyZWN0X2J1ZmZlcjoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6
YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxyZW5kZXIsaW5kaXJlY3RfZHJhdzppbmRpcmVj
dF9idWZmZXJfc3RhdGU6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFw
aSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMscmVuZGVyLGluZGlyZWN0X2RyYXc6aW5kaXJlY3Rf
YnVmZmVyLGRldmljZV9taXNtYXRjaDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxyZW5kZXIsaW5kaXJlY3RfZHJhdzpp
bmRpcmVjdF9idWZmZXJfdXNhZ2U6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMscmVuZGVyLGluZGlyZWN0X2RyYXc6aW5k
aXJlY3Rfb2Zmc2V0X2FsaWdubWVudDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxyZW5kZXIsaW5kaXJlY3RfZHJhdzpp
bmRpcmVjdF9vZmZzZXRfb29iOionPgotPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdw
dTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxjbWRzLHJlbmRlcixzZXRJbmRleEJ1ZmZlcjppbmRl
eF9idWZmZXI6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxp
ZGF0aW9uLGVuY29kaW5nLGNtZHMscmVuZGVyLHNldEluZGV4QnVmZmVyOmluZGV4X2J1ZmZlcl9z
dGF0ZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRp
b24sZW5jb2RpbmcsY21kcyxyZW5kZXIsc2V0SW5kZXhCdWZmZXI6aW5kZXhfYnVmZmVyLGRldmlj
ZV9taXNtYXRjaDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZh
bGlkYXRpb24sZW5jb2RpbmcsY21kcyxyZW5kZXIsc2V0SW5kZXhCdWZmZXI6aW5kZXhfYnVmZmVy
X3VzYWdlOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRh
dGlvbixlbmNvZGluZyxjbWRzLHJlbmRlcixzZXRJbmRleEJ1ZmZlcjpvZmZzZXRfYWxpZ25tZW50
OionPgpAQCAtMzgwLDcgKzM4OSw3IEBACiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMscmVuZGVyLHNldFBpcGVsaW5lOmludmFs
aWRfcGlwZWxpbmU6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2
YWxpZGF0aW9uLGVuY29kaW5nLGNtZHMscmVuZGVyLHNldFBpcGVsaW5lOnBpcGVsaW5lLGRldmlj
ZV9taXNtYXRjaDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZh
bGlkYXRpb24sZW5jb2RpbmcsY21kcyxyZW5kZXIsc2V0VmVydGV4QnVmZmVyOnNsb3Q6Kic+Ci08
bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5n
LGNtZHMscmVuZGVyLHNldFZlcnRleEJ1ZmZlcjp2ZXJ0ZXhfYnVmZmVyOionPgorPG1ldGEgbmFt
ZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxjbWRzLHJl
bmRlcixzZXRWZXJ0ZXhCdWZmZXI6dmVydGV4X2J1ZmZlcl9zdGF0ZToqJz4KIDxtZXRhIG5hbWU9
dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21kcyxyZW5k
ZXIsc2V0VmVydGV4QnVmZmVyOnZlcnRleF9idWZmZXIsZGV2aWNlX21pc21hdGNoOionPgogPG1l
dGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxj
bWRzLHJlbmRlcixzZXRWZXJ0ZXhCdWZmZXI6dmVydGV4X2J1ZmZlcl91c2FnZToqJz4KIDxtZXRh
IG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcsY21k
cyxyZW5kZXIsc2V0VmVydGV4QnVmZmVyOm9mZnNldF9hbGlnbm1lbnQ6Kic+CkBAIC00MTQsNyAr
NDIzLDcgQEAKIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRp
b24sZW5jb2RpbmcscXVlcmllcyxnZW5lcmFsOnRpbWVzdGFtcF9xdWVyeSxxdWVyeV90eXBlX2Fu
ZF9pbmRleDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlk
YXRpb24sZW5jb2RpbmcscXVlcmllcyxnZW5lcmFsOnRpbWVzdGFtcF9xdWVyeSxpbnZhbGlkX3F1
ZXJ5X3NldDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlk
YXRpb24sZW5jb2RpbmcscXVlcmllcyxnZW5lcmFsOnRpbWVzdGFtcF9xdWVyeSxkZXZpY2VfbWlz
bWF0Y2g6Kic+Ci08bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0
aW9uLGVuY29kaW5nLHF1ZXJpZXMscmVzb2x2ZVF1ZXJ5U2V0OmludmFsaWRfcXVlcnlzZXRfYW5k
X2Rlc3RpbmF0aW9uX2J1ZmZlcjoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJn
cHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcscXVlcmllcyxyZXNvbHZlUXVlcnlTZXQ6cXVlcnlz
ZXRfYW5kX2Rlc3RpbmF0aW9uX2J1ZmZlcl9zdGF0ZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBj
b250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZW5jb2RpbmcscXVlcmllcyxyZXNvbHZlUXVl
cnlTZXQ6Zmlyc3RfcXVlcnlfYW5kX3F1ZXJ5X2NvdW50OionPgogPG1ldGEgbmFtZT12YXJpYW50
IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixlbmNvZGluZyxxdWVyaWVzLHJlc29sdmVR
dWVyeVNldDpkZXN0aW5hdGlvbl9idWZmZXJfdXNhZ2U6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQg
Y29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGVuY29kaW5nLHF1ZXJpZXMscmVzb2x2ZVF1
ZXJ5U2V0OmRlc3RpbmF0aW9uX29mZnNldF9hbGlnbm1lbnQ6Kic+CkBAIC00MzIsNyArNDQxLDgg
QEAKIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sZXJy
b3Jfc2NvcGU6aWZfbm9fZXJyb3Jfc2NvcGVfaGFuZGxlc19hbl9lcnJvcl9pdF9maXJlc19hbl91
bmNhcHR1cmVkZXJyb3JfZXZlbnQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OmFwaSx2YWxpZGF0aW9uLGVycm9yX3Njb3BlOnB1c2gscG9wcGluZ19zaWJsaW5nX2Vycm9y
X3Njb3Blc19tdXN0X2JlX2JhbGFuY2VkOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9
J3dlYmdwdTphcGksdmFsaWRhdGlvbixlcnJvcl9zY29wZTpwdXNoLHBvcHBpbmdfbmVzdGVkX2Vy
cm9yX3Njb3Blc19tdXN0X2JlX2JhbGFuY2VkOionPgotPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixpbWFnZV9jb3B5LGJ1ZmZlcl9yZWxhdGVkOnZhbGlk
OionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixp
bWFnZV9jb3B5LGJ1ZmZlcl9yZWxhdGVkOmJ1ZmZlcl9zdGF0ZToqJz4KKzxtZXRhIG5hbWU9dmFy
aWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24saW1hZ2VfY29weSxidWZmZXJfcmVs
YXRlZDpidWZmZXIsZGV2aWNlX21pc21hdGNoOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixpbWFnZV9jb3B5LGJ1ZmZlcl9yZWxhdGVkOnVzYWdl
OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixp
bWFnZV9jb3B5LGJ1ZmZlcl9yZWxhdGVkOmJ5dGVzX3Blcl9yb3dfYWxpZ25tZW50OionPgogPG1l
dGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixpbWFnZV9jb3B5
LGxheW91dF9yZWxhdGVkOmJvdW5kX29uX3Jvd3NfcGVyX2ltYWdlOionPgpAQCAtNDQ0LDcgKzQ1
NCw2IEBACiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9u
LGltYWdlX2NvcHksbGF5b3V0X3JlbGF0ZWQ6Ym91bmRfb25fb2Zmc2V0OionPgogPG1ldGEgbmFt
ZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixpbWFnZV9jb3B5LHRleHR1
cmVfcmVsYXRlZDp2YWxpZDoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6
YXBpLHZhbGlkYXRpb24saW1hZ2VfY29weSx0ZXh0dXJlX3JlbGF0ZWQ6dGV4dHVyZSxkZXZpY2Vf
bWlzbWF0Y2g6Kic+Ci08bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxp
ZGF0aW9uLGltYWdlX2NvcHksdGV4dHVyZV9yZWxhdGVkOmJ1ZmZlcixkZXZpY2VfbWlzbWF0Y2g6
Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLGlt
YWdlX2NvcHksdGV4dHVyZV9yZWxhdGVkOnVzYWdlOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNv
bnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixpbWFnZV9jb3B5LHRleHR1cmVfcmVsYXRlZDpz
YW1wbGVfY291bnQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2
YWxpZGF0aW9uLGltYWdlX2NvcHksdGV4dHVyZV9yZWxhdGVkOm1pcF9sZXZlbDoqJz4KQEAgLTQ3
NywxMSArNDg2LDExIEBACiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2
YWxpZGF0aW9uLHF1ZXVlLGNvcHlUb1RleHR1cmUsQ29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmU6
ZGVzdGluYXRpb25fdGV4dHVyZSxmb3JtYXQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVu
dD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHF1ZXVlLGNvcHlUb1RleHR1cmUsQ29weUV4dGVybmFs
SW1hZ2VUb1RleHR1cmU6T09CLHNvdXJjZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50
PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24scXVldWUsY29weVRvVGV4dHVyZSxDb3B5RXh0ZXJuYWxJ
bWFnZVRvVGV4dHVyZTpPT0IsZGVzdGluYXRpb246Kic+Ci08bWV0YSBuYW1lPXZhcmlhbnQgY29u
dGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHF1ZXVlLGRlc3Ryb3llZCxidWZmZXI6cmVzb2x2
ZVF1ZXJ5U2V0OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFs
aWRhdGlvbixxdWV1ZSxkZXN0cm95ZWQscXVlcnlfc2V0OmJlZ2luT2NjbHVzaW9uUXVlcnk6Kic+
CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHF1ZXVl
LGRlc3Ryb3llZCxxdWVyeV9zZXQ6d3JpdGVUaW1lc3RhbXA6Kic+CiA8bWV0YSBuYW1lPXZhcmlh
bnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHF1ZXVlLGRlc3Ryb3llZCxxdWVyeV9z
ZXQ6cmVzb2x2ZVF1ZXJ5U2V0OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdw
dTphcGksdmFsaWRhdGlvbixxdWV1ZSxzdWJtaXQ6Y29tbWFuZF9idWZmZXIsZGV2aWNlX21pc21h
dGNoOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlv
bixxdWV1ZSx3cml0ZUJ1ZmZlcjpidWZmZXJfc3RhdGU6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQg
Y29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHF1ZXVlLHdyaXRlQnVmZmVyOnJhbmdlczoq
Jz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24scXVl
dWUsd3JpdGVCdWZmZXI6dXNhZ2VzOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dl
YmdwdTphcGksdmFsaWRhdGlvbixxdWV1ZSx3cml0ZUJ1ZmZlcjpidWZmZXIsZGV2aWNlX21pc21h
dGNoOionPgpAQCAtNTA1LDYgKzUxNCw3IEBACiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0n
d2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHJlbmRlcl9wYXNzX2Rlc2NyaXB0b3I6dXNlX2FfcmVzb2x2
ZV90YXJnZXRfaW5fYV9mb3JtYXRfZGlmZmVyZW50X3RoYW5fdGhlX2F0dGFjaG1lbnRfaXNfbm90
X2FsbG93ZWQ6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxp
ZGF0aW9uLHJlbmRlcl9wYXNzX2Rlc2NyaXB0b3I6c2l6ZV9vZl90aGVfcmVzb2x2ZV90YXJnZXRf
bXVzdF9iZV90aGVfc2FtZV9hc190aGVfY29sb3JfYXR0YWNobWVudDoqJz4KIDxtZXRhIG5hbWU9
dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24scmVuZGVyX3Bhc3NfZGVzY3Jp
cHRvcjpjaGVja19kZXB0aF9zdGVuY2lsX2F0dGFjaG1lbnRfc2FtcGxlX2NvdW50c19taXNtYXRj
aDoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24s
cmVuZGVyX3Bhc3NfZGVzY3JpcHRvcjpkZXB0aF9zdGVuY2lsX2F0dGFjaG1lbnQ6Kic+CiA8bWV0
YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHJlbmRlcl9wYXNz
X2Rlc2NyaXB0b3I6bXVsdGlzYW1wbGVfcmVuZGVyX3RhcmdldF9mb3JtYXRzX3N1cHBvcnRfcmVz
b2x2ZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRp
b24scmVzb3VyY2VfdXNhZ2VzLHRleHR1cmUsaW5fcGFzc19lbmNvZGVyOnN1YnJlc291cmNlc19h
bmRfYmluZGluZ190eXBlc19jb21iaW5hdGlvbl9mb3JfY29sb3I6Kic+CiA8bWV0YSBuYW1lPXZh
cmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHJlc291cmNlX3VzYWdlcyx0ZXh0
dXJlLGluX3Bhc3NfZW5jb2RlcjpzdWJyZXNvdXJjZXNfYW5kX2JpbmRpbmdfdHlwZXNfY29tYmlu
YXRpb25fZm9yX2FzcGVjdDoqJz4KQEAgLTUxNiw4ICs1MjYsNDUgQEAKIDxtZXRhIG5hbWU9dmFy
aWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24scmVzb3VyY2VfdXNhZ2VzLHRleHR1
cmUsaW5fcGFzc19lbmNvZGVyOnZhbGlkYXRpb25fc2NvcGUsc2FtZV9kcmF3X29yX2Rpc3BhdGNo
OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixy
ZXNvdXJjZV91c2FnZXMsdGV4dHVyZSxpbl9wYXNzX2VuY29kZXI6dmFsaWRhdGlvbl9zY29wZSxk
aWZmZXJlbnRfZHJhd3Nfb3JfZGlzcGF0Y2hlczoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250
ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24scmVzb3VyY2VfdXNhZ2VzLHRleHR1cmUsaW5fcGFz
c19lbmNvZGVyOnZhbGlkYXRpb25fc2NvcGUsZGlmZmVyZW50X3Bhc3NlczoqJz4KLTxtZXRhIG5h
bWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24scmVzb3VyY2VfdXNhZ2Vz
LHRleHR1cmUsaW5fcmVuZGVyX2NvbW1vbjpzdWJyZXNvdXJjZXNfZnJvbV9zYW1lX3RleHR1cmVf
YXNfY29sb3JfYXR0YWNobWVudHM6Kic+Ci08bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OmFwaSx2YWxpZGF0aW9uLHJlc291cmNlX3VzYWdlcyx0ZXh0dXJlLGluX3JlbmRlcl9jb21t
b246c3VicmVzb3VyY2VzX2Zyb21fc2FtZV90ZXh0dXJlX2FzX2NvbG9yX2F0dGFjaG1lbnRfYW5k
X2luX2JpbmRfZ3JvdXA6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFw
aSx2YWxpZGF0aW9uLHJlc291cmNlX3VzYWdlcyx0ZXh0dXJlLGluX3JlbmRlcl9jb21tb246c3Vi
cmVzb3VyY2VzLGNvbG9yX2F0dGFjaG1lbnRzOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixyZXNvdXJjZV91c2FnZXMsdGV4dHVyZSxpbl9yZW5k
ZXJfY29tbW9uOnN1YnJlc291cmNlcyxjb2xvcl9hdHRhY2htZW50X2FuZF9iaW5kX2dyb3VwOion
PgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixyZXNv
dXJjZV91c2FnZXMsdGV4dHVyZSxpbl9yZW5kZXJfY29tbW9uOnN1YnJlc291cmNlcyxkZXB0aF9z
dGVuY2lsX2F0dGFjaG1lbnRfYW5kX2JpbmRfZ3JvdXA6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQg
Y29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHJlc291cmNlX3VzYWdlcyx0ZXh0dXJlLGlu
X3JlbmRlcl9jb21tb246c3VicmVzb3VyY2VzLG11bHRpcGxlX2JpbmRfZ3JvdXBzOionPgorPG1l
dGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixyZXNvdXJjZV91
c2FnZXMsdGV4dHVyZSxpbl9yZW5kZXJfY29tbW9uOnN1YnJlc291cmNlcyxkZXB0aF9zdGVuY2ls
X3RleHR1cmVfaW5fYmluZF9ncm91cHM6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0n
d2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHJlc291cmNlX3VzYWdlcyx0ZXh0dXJlLGluX3JlbmRlcl9t
aXNjOnN1YnJlc291cmNlcyxzZXRfYmluZF9ncm91cF9vbl9zYW1lX2luZGV4X2NvbG9yX3RleHR1
cmU6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9u
LHJlc291cmNlX3VzYWdlcyx0ZXh0dXJlLGluX3JlbmRlcl9taXNjOnN1YnJlc291cmNlcyxzZXRf
YmluZF9ncm91cF9vbl9zYW1lX2luZGV4X2RlcHRoX3N0ZW5jaWxfdGV4dHVyZToqJz4KKzxtZXRh
IG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24scmVzb3VyY2VfdXNh
Z2VzLHRleHR1cmUsaW5fcmVuZGVyX21pc2M6c3VicmVzb3VyY2VzLHNldF91bnVzZWRfYmluZF9n
cm91cDoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRp
b24scmVzb3VyY2VfdXNhZ2VzLHRleHR1cmUsaW5fcmVuZGVyX21pc2M6c3VicmVzb3VyY2VzLHRl
eHR1cmVfdXNhZ2VzX2luX2NvcHlfYW5kX3JlbmRlcl9wYXNzOionPgorPG1ldGEgbmFtZT12YXJp
YW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixzdGF0ZSxkZXZpY2VfbG9zdCxkZXN0
cm95OmNyZWF0ZUJ1ZmZlcjoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6
YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2aWNlX2xvc3QsZGVzdHJveTpjcmVhdGVUZXh0dXJlLDJk
LHVuY29tcHJlc3NlZF9mb3JtYXQ6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OmFwaSx2YWxpZGF0aW9uLHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6Y3JlYXRlVGV4dHVy
ZSwyZCxjb21wcmVzc2VkX2Zvcm1hdDoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2aWNlX2xvc3QsZGVzdHJveTpjcmVhdGVWaWV3
LDJkLHVuY29tcHJlc3NlZF9mb3JtYXQ6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0n
d2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6Y3JlYXRlVmll
dywyZCxjb21wcmVzc2VkX2Zvcm1hdDoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2aWNlX2xvc3QsZGVzdHJveTpjcmVhdGVTYW1w
bGVyOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlv
bixzdGF0ZSxkZXZpY2VfbG9zdCxkZXN0cm95OmNyZWF0ZUJpbmRHcm91cExheW91dDoqJz4KKzxt
ZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2
aWNlX2xvc3QsZGVzdHJveTpjcmVhdGVCaW5kR3JvdXA6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQg
Y29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6
Y3JlYXRlUGlwZWxpbmVMYXlvdXQ6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OmFwaSx2YWxpZGF0aW9uLHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6Y3JlYXRlU2hhZGVy
TW9kdWxlOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRh
dGlvbixzdGF0ZSxkZXZpY2VfbG9zdCxkZXN0cm95OmNyZWF0ZUNvbXB1dGVQaXBlbGluZToqJz4K
KzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUs
ZGV2aWNlX2xvc3QsZGVzdHJveTpjcmVhdGVSZW5kZXJQaXBlbGluZToqJz4KKzxtZXRhIG5hbWU9
dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2aWNlX2xvc3Qs
ZGVzdHJveTpjcmVhdGVDb21tYW5kRW5jb2RlcjoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250
ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2aWNlX2xvc3QsZGVzdHJveTpjcmVh
dGVSZW5kZXJCdW5kbGVFbmNvZGVyOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dl
YmdwdTphcGksdmFsaWRhdGlvbixzdGF0ZSxkZXZpY2VfbG9zdCxkZXN0cm95OmNyZWF0ZVF1ZXJ5
U2V0OionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlv
bixzdGF0ZSxkZXZpY2VfbG9zdCxkZXN0cm95OmNvbW1hbmQsY29weUJ1ZmZlclRvQnVmZmVyOion
PgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixzdGF0
ZSxkZXZpY2VfbG9zdCxkZXN0cm95OmNvbW1hbmQsY29weUJ1ZmZlclRvVGV4dHVyZToqJz4KKzxt
ZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2
aWNlX2xvc3QsZGVzdHJveTpjb21tYW5kLGNvcHlUZXh0dXJlVG9CdWZmZXI6Kic+Cis8bWV0YSBu
YW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHN0YXRlLGRldmljZV9s
b3N0LGRlc3Ryb3k6Y29tbWFuZCxjb3B5VGV4dHVyZVRvVGV4dHVyZToqJz4KKzxtZXRhIG5hbWU9
dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUsZGV2aWNlX2xvc3Qs
ZGVzdHJveTpjb21tYW5kLGNsZWFyQnVmZmVyOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixzdGF0ZSxkZXZpY2VfbG9zdCxkZXN0cm95OmNvbW1h
bmQsd3JpdGVUaW1lc3RhbXA6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1
OmFwaSx2YWxpZGF0aW9uLHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6Y29tbWFuZCxyZXNvbHZl
UXVlcnlTZXQ6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxp
ZGF0aW9uLHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6Y29tbWFuZCxjb21wdXRlUGFzcyxkaXNw
YXRjaDoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRp
b24sc3RhdGUsZGV2aWNlX2xvc3QsZGVzdHJveTpjb21tYW5kLHJlbmRlclBhc3MsZHJhdzoqJz4K
KzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUs
ZGV2aWNlX2xvc3QsZGVzdHJveTpjb21tYW5kLHJlbmRlclBhc3MscmVuZGVyQnVuZGxlOionPgor
PG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixzdGF0ZSxk
ZXZpY2VfbG9zdCxkZXN0cm95OnF1ZXVlLHdyaXRlQnVmZmVyOionPgorPG1ldGEgbmFtZT12YXJp
YW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixzdGF0ZSxkZXZpY2VfbG9zdCxkZXN0
cm95OnF1ZXVlLHdyaXRlVGV4dHVyZSwyZCx1bmNvbXByZXNzZWRfZm9ybWF0OionPgorPG1ldGEg
bmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbixzdGF0ZSxkZXZpY2Vf
bG9zdCxkZXN0cm95OnF1ZXVlLHdyaXRlVGV4dHVyZSwyZCxjb21wcmVzc2VkX2Zvcm1hdDoqJz4K
KzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6YXBpLHZhbGlkYXRpb24sc3RhdGUs
ZGV2aWNlX2xvc3QsZGVzdHJveTpxdWV1ZSxjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSxjYW52
YXM6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9u
LHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6cXVldWUsY29weUV4dGVybmFsSW1hZ2VUb1RleHR1
cmUsaW1hZ2VCaXRtYXA6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFw
aSx2YWxpZGF0aW9uLHRleHR1cmUsZGVzdHJveTpiYXNlOionPgogPG1ldGEgbmFtZT12YXJpYW50
IGNvbnRlbnQ9J3dlYmdwdTphcGksdmFsaWRhdGlvbix0ZXh0dXJlLGRlc3Ryb3k6dHdpY2U6Kic+
CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OmFwaSx2YWxpZGF0aW9uLHRleHR1
cmUsZGVzdHJveTpzdWJtaXRfYV9kZXN0cm95ZWRfdGV4dHVyZV9hc19hdHRhY2htZW50OionPgpA
QCAtNTU2LDYgKzYwMywxNCBAQAogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpp
ZGwsY29uc3RhbnRzLGZsYWdzOkNvbG9yV3JpdGUsdmFsdWVzOionPgogPG1ldGEgbmFtZT12YXJp
YW50IGNvbnRlbnQ9J3dlYmdwdTppZGwsY29uc3RhbnRzLGZsYWdzOlNoYWRlclN0YWdlLGNvdW50
OionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTppZGwsY29uc3RhbnRzLGZs
YWdzOlNoYWRlclN0YWdlLHZhbHVlczoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6c2hhZGVyLGV4ZWN1dGlvbixldmFsdWF0aW9uX29yZGVyOmJpbmFyeV9hcml0aDoqJz4K
KzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLGV4ZWN1dGlvbixldmFs
dWF0aW9uX29yZGVyOmJpbmFyeV9sb2dpY2FsOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTpzaGFkZXIsZXhlY3V0aW9uLGV2YWx1YXRpb25fb3JkZXI6YmluYXJ5X21peGVk
OionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpzaGFkZXIsZXhlY3V0aW9u
LGV2YWx1YXRpb25fb3JkZXI6Y2FsbDoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6c2hhZGVyLGV4ZWN1dGlvbixldmFsdWF0aW9uX29yZGVyOmluZGV4X2FjY2Vzc29yOion
PgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpzaGFkZXIsZXhlY3V0aW9uLGV2
YWx1YXRpb25fb3JkZXI6YXNzaWdubWVudDoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50
PSd3ZWJncHU6c2hhZGVyLGV4ZWN1dGlvbixldmFsdWF0aW9uX29yZGVyOnR5cGVfY29uc3RydWN0
b3I6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OnNoYWRlcixleGVjdXRp
b24sZXZhbHVhdGlvbl9vcmRlcjptZW1iZXJfYWNjZXNzb3I6Kic+CiA8bWV0YSBuYW1lPXZhcmlh
bnQgY29udGVudD0nd2ViZ3B1OnNoYWRlcixleGVjdXRpb24sZXhwcmVzc2lvbixiaW5hcnksYml0
d2lzZTpiaXR3aXNlX29yOionPgogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpz
aGFkZXIsZXhlY3V0aW9uLGV4cHJlc3Npb24sYmluYXJ5LGJpdHdpc2U6Yml0d2lzZV9hbmQ6Kic+
CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OnNoYWRlcixleGVjdXRpb24sZXhw
cmVzc2lvbixiaW5hcnksYml0d2lzZTpiaXR3aXNlX2V4Y2x1c2l2ZV9vcjoqJz4KQEAgLTU2NCw2
ICs2MTksMTIgQEAKIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLGV4
ZWN1dGlvbixleHByZXNzaW9uLGJpbmFyeSxmMzJfYXJpdGhtZXRpYzptdWx0aXBsaWNhdGlvbjoq
Jz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLGV4ZWN1dGlvbixl
eHByZXNzaW9uLGJpbmFyeSxmMzJfYXJpdGhtZXRpYzpkaXZpc2lvbjoqJz4KIDxtZXRhIG5hbWU9
dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLGV4ZWN1dGlvbixleHByZXNzaW9uLGJpbmFy
eSxmMzJfYXJpdGhtZXRpYzptb2R1bHVzOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9
J3dlYmdwdTpzaGFkZXIsZXhlY3V0aW9uLGV4cHJlc3Npb24sYmluYXJ5LGYzMl9sb2dpY2FsOmVx
dWFsczoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLGV4ZWN1
dGlvbixleHByZXNzaW9uLGJpbmFyeSxmMzJfbG9naWNhbDpub3RfZXF1YWxzOionPgorPG1ldGEg
bmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpzaGFkZXIsZXhlY3V0aW9uLGV4cHJlc3Npb24s
YmluYXJ5LGYzMl9sb2dpY2FsOmxlc3NfdGhhbjoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250
ZW50PSd3ZWJncHU6c2hhZGVyLGV4ZWN1dGlvbixleHByZXNzaW9uLGJpbmFyeSxmMzJfbG9naWNh
bDpsZXNzX2VxdWFsczoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hh
ZGVyLGV4ZWN1dGlvbixleHByZXNzaW9uLGJpbmFyeSxmMzJfbG9naWNhbDpncmVhdGVyX3RoYW46
Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OnNoYWRlcixleGVjdXRpb24s
ZXhwcmVzc2lvbixiaW5hcnksZjMyX2xvZ2ljYWw6Z3JlYXRlcl9lcXVhbHM6Kic+CiA8bWV0YSBu
YW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OnNoYWRlcixleGVjdXRpb24sZXhwcmVzc2lvbixj
YWxsLGJ1aWx0aW4sYWJzOnUzMjoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJn
cHU6c2hhZGVyLGV4ZWN1dGlvbixleHByZXNzaW9uLGNhbGwsYnVpbHRpbixhYnM6aTMyOionPgog
PG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpzaGFkZXIsZXhlY3V0aW9uLGV4cHJl
c3Npb24sY2FsbCxidWlsdGluLGFiczpmMzI6Kic+CkBAIC02NzIsNiArNzMzLDEzIEBACiA8bWV0
YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OnNoYWRlcix2YWxpZGF0aW9uLHNoYWRlcl9p
byxsb2NhdGlvbnM6dHlwZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6
c2hhZGVyLHZhbGlkYXRpb24sc2hhZGVyX2lvLGxvY2F0aW9uczpuZXN0aW5nOionPgogPG1ldGEg
bmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpzaGFkZXIsdmFsaWRhdGlvbixzaGFkZXJfaW8s
bG9jYXRpb25zOmR1cGxpY2F0ZXM6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OnNoYWRlcix2YWxpZGF0aW9uLHRva2VuczplbXB0eToqJz4KKzxtZXRhIG5hbWU9dmFyaWFu
dCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLHZhbGlkYXRpb24sdG9rZW5zOm51bGxfY2hhcmFjdGVy
czoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLHZhbGlkYXRp
b24sdG9rZW5zOndoaXRlc3BhY2U6Kic+Cis8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2Vi
Z3B1OnNoYWRlcix2YWxpZGF0aW9uLHRva2Vuczpjb21tZW50czoqJz4KKzxtZXRhIG5hbWU9dmFy
aWFudCBjb250ZW50PSd3ZWJncHU6c2hhZGVyLHZhbGlkYXRpb24sdG9rZW5zOmxpbmVfY29tbWVu
dF90ZXJtaW5hdG9yczoqJz4KKzxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJncHU6c2hh
ZGVyLHZhbGlkYXRpb24sdG9rZW5zOnVudGVybWluYXRlZF9ibG9ja19jb21tZW50OionPgorPG1l
dGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpzaGFkZXIsdmFsaWRhdGlvbix0b2tlbnM6
aWRlbnRpZmllcnM6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OnNoYWRl
cix2YWxpZGF0aW9uLHZhcmlhYmxlX2FuZF9jb25zdDppbml0aWFsaXplcl90eXBlOionPgogPG1l
dGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTpzaGFkZXIsdmFsaWRhdGlvbix2YXJpYWJs
ZV9hbmRfY29uc3Q6aW9fc2hhcmVhYmxlX3R5cGU6Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29u
dGVudD0nd2ViZ3B1OnNoYWRlcix2YWxpZGF0aW9uLHdnc2wsYmFzaWM6dHJpdmlhbDoqJz4KQEAg
LTY4Miw2ICs3NTAsOSBAQAogPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTp1dGls
LHRleHR1cmUsdGV4ZWxfZGF0YTpzaW50X3RleGVsX2RhdGFfaW5fc2hhZGVyOionPgogPG1ldGEg
bmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTp1dGlsLHRleHR1cmUsdGV4ZWxfZGF0YTpmbG9h
dF90ZXhlbF9kYXRhX2luX3NoYWRlcjoqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3
ZWJncHU6dXRpbCx0ZXh0dXJlLHRleGVsX2RhdGE6dWZsb2F0X3RleGVsX2RhdGFfaW5fc2hhZGVy
OionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTp1dGlsLHRleHR1cmUsdGV4
dHVyZV9vazpmbG9hdDMyOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRlbnQ9J3dlYmdwdTp1
dGlsLHRleHR1cmUsdGV4dHVyZV9vazpub3JtOionPgorPG1ldGEgbmFtZT12YXJpYW50IGNvbnRl
bnQ9J3dlYmdwdTp1dGlsLHRleHR1cmUsdGV4dHVyZV9vazpzbm9ybV9taW46Kic+CiA8bWV0YSBu
YW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OndlYl9wbGF0Zm9ybSxjYW52YXMsY29udGV4dF9j
cmVhdGlvbjpyZXR1cm5fdHlwZToqJz4KIDxtZXRhIG5hbWU9dmFyaWFudCBjb250ZW50PSd3ZWJn
cHU6d2ViX3BsYXRmb3JtLGNhbnZhcyxnZXRDdXJyZW50VGV4dHVyZTptdWx0aXBsZV9mcmFtZXM6
Kic+CiA8bWV0YSBuYW1lPXZhcmlhbnQgY29udGVudD0nd2ViZ3B1OndlYl9wbGF0Zm9ybSxjYW52
YXMsZ2V0UHJlZmVycmVkRm9ybWF0OnZhbHVlOionPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vYWRhcHRlci9yZXF1ZXN0RGV2
aWNlX2xpbWl0cy5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L2FwaS9vcGVyYXRpb24vYWRhcHRlci9yZXF1ZXN0RGV2aWNlX2xpbWl0cy5zcGVjLmpzCmluZGV4
IDAxNTQ2ZDY1N2MwYS4uYTE3ZTg3ZmZmMzY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9hZGFwdGVyL3JlcXVlc3REZXZpY2Vf
bGltaXRzLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L2FwaS9vcGVyYXRpb24vYWRhcHRlci9yZXF1ZXN0RGV2aWNlX2xpbWl0cy5zcGVjLmpzCkBAIC01
LDEzICs1LDEwIEBAIFRlc3RzIHBhc3NpbmcgdmFyaW91cyByZXF1aXJlZExpbWl0cyB0byBHUFVB
ZGFwdGVyLnJlcXVlc3REZXZpY2UuCiBgOwogaW1wb3J0IHsgRml4dHVyZSB9IGZyb20gJy4uLy4u
Ly4uLy4uL2NvbW1vbi9mcmFtZXdvcmsvZml4dHVyZS5qcyc7CiBpbXBvcnQgeyBtYWtlVGVzdEdy
b3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay90ZXN0X2dyb3VwLmpzJzsK
LWltcG9ydCB7IGtleXNPZiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi91dGlsL2RhdGFfdGFi
bGVzLmpzJzsKIGltcG9ydCB7IGdldEdQVSB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi91dGls
L25hdmlnYXRvcl9ncHUuanMnOwogaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi4vLi4vLi4vLi4v
Y29tbW9uL3V0aWwvdXRpbC5qcyc7Ci1pbXBvcnQgeyBEZWZhdWx0TGltaXRzLCBMaW1pdE1heGlt
dW0gfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMuanMnOwotaW1wb3J0IHsgY2xhbXAgfSBmcm9t
ICcuLi8uLi8uLi91dGlsL21hdGguanMnOwotCi1jb25zdCBrTGltaXRUeXBlcyA9IGtleXNPZihE
ZWZhdWx0TGltaXRzKTsKK2ltcG9ydCB7IGtMaW1pdEluZm8sIGtMaW1pdHMgfSBmcm9tICcuLi8u
Li8uLi9jYXBhYmlsaXR5X2luZm8uanMnOworaW1wb3J0IHsgY2xhbXAsIGlzUG93ZXJPZlR3byB9
IGZyb20gJy4uLy4uLy4uL3V0aWwvbWF0aC5qcyc7CiAKIGV4cG9ydCBjb25zdCBnID0gbWFrZVRl
c3RHcm91cChGaXh0dXJlKTsKIApAQCAtMjIsNyArMTksOCBAQCBnLnRlc3QoJ3Vua25vd25fbGlt
aXRzJykKICAgICByZXF1ZXN0RGV2aWNlIHRvIHJlamVjdC5gCiAgICkKICAgLmZuKGFzeW5jIHQg
PT4gewotICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBuYXZpZ2F0b3IuZ3B1LnJlcXVlc3RBZGFw
dGVyKCk7CisgICAgY29uc3QgZ3B1ID0gZ2V0R1BVKCk7CisgICAgY29uc3QgYWRhcHRlciA9IGF3
YWl0IGdwdS5yZXF1ZXN0QWRhcHRlcigpOwogICAgIGFzc2VydChhZGFwdGVyICE9PSBudWxsKTsK
IAogICAgIGNvbnN0IHJlcXVpcmVkTGltaXRzID0geyB1bmtub3duTGltaXROYW1lOiA5MDAwIH07
CkBAIC0zOCwxMSArMzYsNyBAQCBnLnRlc3QoJ3N1cHBvcnRlZF9saW1pdHMnKQogICAgIC0gVGVz
dHMgZWFjaCBsaW1pdCB3aXRoIHRoZSBzdXBwb3J0ZWQgdmFsdWVzIGdpdmVuIGJ5IHRoZSBhZGFw
dGVyYAogICApCiAgIC5wYXJhbXModSA9PgotICAgIHUKLSAgICAgIC5jb21iaW5lKCdsaW1pdCcs
IGtMaW1pdFR5cGVzKQotICAgICAgLnVubGVzcyhwID0+IHR5cGVvZiBEZWZhdWx0TGltaXRzW3Au
bGltaXRdICE9PSAnbnVtYmVyJykKLSAgICAgIC5iZWdpblN1YmNhc2VzKCkKLSAgICAgIC5jb21i
aW5lKCdsaW1pdFZhbHVlJywgWydkZWZhdWx0JywgJ2FkYXB0ZXInXSkKKyAgICB1LmNvbWJpbmUo
J2xpbWl0Jywga0xpbWl0cykuYmVnaW5TdWJjYXNlcygpLmNvbWJpbmUoJ2xpbWl0VmFsdWUnLCBb
J2RlZmF1bHQnLCAnYWRhcHRlciddKQogICApCiAgIC5mbihhc3luYyB0ID0+IHsKICAgICBjb25z
dCB7IGxpbWl0LCBsaW1pdFZhbHVlIH0gPSB0LnBhcmFtczsKQEAgLTU0LDcgKzQ4LDcgQEAgZy50
ZXN0KCdzdXBwb3J0ZWRfbGltaXRzJykKICAgICBsZXQgdmFsdWUgPSAtMTsKICAgICBzd2l0Y2gg
KGxpbWl0VmFsdWUpIHsKICAgICAgIGNhc2UgJ2RlZmF1bHQnOgotICAgICAgICB2YWx1ZSA9IERl
ZmF1bHRMaW1pdHNbbGltaXRdOworICAgICAgICB2YWx1ZSA9IGtMaW1pdEluZm9bbGltaXRdLmRl
ZmF1bHQ7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSAnYWRhcHRlcic6CiAgICAgICAgIHZh
bHVlID0gYWRhcHRlci5saW1pdHNbbGltaXRdOwpAQCAtNzksMjUgKzczLDM1IEBAIGcudGVzdCgn
YmV0dGVyX3RoYW5fc3VwcG9ydGVkJykKICAgKQogICAucGFyYW1zKHUgPT4KICAgICB1Ci0gICAg
ICAuY29tYmluZSgnbGltaXQnLCBrTGltaXRUeXBlcykKLSAgICAgIC51bmxlc3MocCA9PiB0eXBl
b2YgRGVmYXVsdExpbWl0c1twLmxpbWl0XSAhPT0gJ251bWJlcicpCisgICAgICAuY29tYmluZSgn
bGltaXQnLCBrTGltaXRzKQogICAgICAgLmJlZ2luU3ViY2FzZXMoKQotICAgICAgLmNvbWJpbmUo
J292ZXInLCBbMSwgMzIsIDY1NTM1XSkKKyAgICAgIC5leHBhbmRXaXRoUGFyYW1zKHAgPT4gewor
ICAgICAgICBzd2l0Y2ggKGtMaW1pdEluZm9bcC5saW1pdF0uY2xhc3MpIHsKKyAgICAgICAgICBj
YXNlICdtYXhpbXVtJzoKKyAgICAgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICAgIHsgbXVs
OiAxLCBhZGQ6IDEgfSwKKyAgICAgICAgICAgICAgeyBtdWw6IDEsIGFkZDogMTAwIH0sCisgICAg
ICAgICAgICBdOworCisgICAgICAgICAgY2FzZSAnYWxpZ25tZW50JzoKKyAgICAgICAgICAgIHJl
dHVybiBbCisgICAgICAgICAgICAgIHsgbXVsOiAxLCBhZGQ6IC0xIH0sCisgICAgICAgICAgICAg
IHsgbXVsOiAxIC8gMiwgYWRkOiAwIH0sCisgICAgICAgICAgICAgIHsgbXVsOiAxIC8gMTAyNCwg
YWRkOiAwIH0sCisgICAgICAgICAgICBdOworICAgICAgICB9CisgICAgICB9KQogICApCiAgIC5m
bihhc3luYyB0ID0+IHsKLSAgICBjb25zdCB7IGxpbWl0LCBvdmVyIH0gPSB0LnBhcmFtczsKKyAg
ICBjb25zdCB7IGxpbWl0LCBtdWwsIGFkZCB9ID0gdC5wYXJhbXM7CiAKICAgICBjb25zdCBncHUg
PSBnZXRHUFUoKTsKICAgICBjb25zdCBhZGFwdGVyID0gYXdhaXQgZ3B1LnJlcXVlc3RBZGFwdGVy
KCk7CiAgICAgYXNzZXJ0KGFkYXB0ZXIgIT09IG51bGwpOwogCi0gICAgY29uc3QgbXVsdCA9IGxp
bWl0LnN0YXJ0c1dpdGgoJ21pbicpID8gLTEgOiAxOwotCisgICAgY29uc3QgdmFsdWUgPSBhZGFw
dGVyLmxpbWl0c1tsaW1pdF0gKiBtdWwgKyBhZGQ7CiAgICAgY29uc3QgcmVxdWlyZWRMaW1pdHMg
PSB7Ci0gICAgICBbbGltaXRdOiBjbGFtcChhZGFwdGVyLmxpbWl0c1tsaW1pdF0gKyBvdmVyICog
bXVsdCwgewotICAgICAgICBtaW46IDAsCi0gICAgICAgIG1heDogTGltaXRNYXhpbXVtW2xpbWl0
XSwKLSAgICAgIH0pLAorICAgICAgW2xpbWl0XTogY2xhbXAodmFsdWUsIHsgbWluOiAwLCBtYXg6
IGtMaW1pdEluZm9bbGltaXRdLm1heGltdW1WYWx1ZSB9KSwKICAgICB9OwogCiAgICAgdC5zaG91
bGRSZWplY3QoJ09wZXJhdGlvbkVycm9yJywgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKHsgcmVxdWly
ZWRMaW1pdHMgfSkpOwpAQCAtMTEzLDMxICsxMTcsNTUgQEAgZy50ZXN0KCd3b3JzZV90aGFuX2Rl
ZmF1bHQnKQogICApCiAgIC5wYXJhbXModSA9PgogICAgIHUKLSAgICAgIC5jb21iaW5lKCdsaW1p
dCcsIGtMaW1pdFR5cGVzKQotICAgICAgLnVubGVzcyhwID0+IHR5cGVvZiBEZWZhdWx0TGltaXRz
W3AubGltaXRdICE9PSAnbnVtYmVyJykKKyAgICAgIC5jb21iaW5lKCdsaW1pdCcsIGtMaW1pdHMp
CiAgICAgICAuYmVnaW5TdWJjYXNlcygpCi0gICAgICAuY29tYmluZSgndW5kZXInLCBbMSwgMzIs
IDY1NTM1XSkKKyAgICAgIC5leHBhbmRXaXRoUGFyYW1zKHAgPT4geworICAgICAgICBzd2l0Y2gg
KGtMaW1pdEluZm9bcC5saW1pdF0uY2xhc3MpIHsKKyAgICAgICAgICBjYXNlICdtYXhpbXVtJzoK
KyAgICAgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICAgIHsgbXVsOiAxLCBhZGQ6IC0xIH0s
CisgICAgICAgICAgICAgIHsgbXVsOiAxLCBhZGQ6IC0xMDAgfSwKKyAgICAgICAgICAgIF07CisK
KyAgICAgICAgICBjYXNlICdhbGlnbm1lbnQnOgorICAgICAgICAgICAgcmV0dXJuIFsKKyAgICAg
ICAgICAgICAgeyBtdWw6IDEsIGFkZDogMSB9LAorICAgICAgICAgICAgICB7IG11bDogMiwgYWRk
OiAwIH0sCisgICAgICAgICAgICAgIHsgbXVsOiAxMDI0LCBhZGQ6IDAgfSwKKyAgICAgICAgICAg
IF07CisgICAgICAgIH0KKyAgICAgIH0pCiAgICkKICAgLmZuKGFzeW5jIHQgPT4gewotICAgIGNv
bnN0IHsgbGltaXQsIHVuZGVyIH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCB7IGxpbWl0LCBtdWws
IGFkZCB9ID0gdC5wYXJhbXM7CiAKICAgICBjb25zdCBncHUgPSBnZXRHUFUoKTsKICAgICBjb25z
dCBhZGFwdGVyID0gYXdhaXQgZ3B1LnJlcXVlc3RBZGFwdGVyKCk7CiAgICAgYXNzZXJ0KGFkYXB0
ZXIgIT09IG51bGwpOwogCi0gICAgY29uc3QgbXVsdCA9IGxpbWl0LnN0YXJ0c1dpdGgoJ21pbicp
ID8gLTEgOiAxOwotCisgICAgY29uc3QgdmFsdWUgPSBrTGltaXRJbmZvW2xpbWl0XS5kZWZhdWx0
ICogbXVsICsgYWRkOwogICAgIGNvbnN0IHJlcXVpcmVkTGltaXRzID0gewotICAgICAgW2xpbWl0
XTogY2xhbXAoRGVmYXVsdExpbWl0c1tsaW1pdF0gLSB1bmRlciAqIG11bHQsIHsKLSAgICAgICAg
bWluOiAwLAotICAgICAgICBtYXg6IExpbWl0TWF4aW11bVtsaW1pdF0sCi0gICAgICB9KSwKKyAg
ICAgIFtsaW1pdF06IGNsYW1wKHZhbHVlLCB7IG1pbjogMCwgbWF4OiBrTGltaXRJbmZvW2xpbWl0
XS5tYXhpbXVtVmFsdWUgfSksCiAgICAgfTsKIAotICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGFk
YXB0ZXIucmVxdWVzdERldmljZSh7IHJlcXVpcmVkTGltaXRzIH0pOwotICAgIGFzc2VydChkZXZp
Y2UgIT09IG51bGwpOwotICAgIHQuZXhwZWN0KAotICAgICAgZGV2aWNlLmxpbWl0c1tsaW1pdF0g
PT09IERlZmF1bHRMaW1pdHNbbGltaXRdLAotICAgICAgJ0RldmljZXMgcmVwb3J0ZWQgbGltaXQg
c2hvdWxkIG1hdGNoIHRoZSBkZWZhdWx0IGxpbWl0JwotICAgICk7CisgICAgbGV0IHN1Y2Nlc3M7
CisgICAgc3dpdGNoIChrTGltaXRJbmZvW2xpbWl0XS5jbGFzcykgeworICAgICAgY2FzZSAnYWxp
Z25tZW50JzoKKyAgICAgICAgc3VjY2VzcyA9IGlzUG93ZXJPZlR3byh2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSAnbWF4aW11bSc6CisgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgY29uc3Qg
ZGV2aWNlID0gYXdhaXQgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKHsgcmVxdWlyZWRMaW1pdHMgfSk7
CisgICAgICBhc3NlcnQoZGV2aWNlICE9PSBudWxsKTsKKyAgICAgIHQuZXhwZWN0KAorICAgICAg
ICBkZXZpY2UubGltaXRzW2xpbWl0XSA9PT0ga0xpbWl0SW5mb1tsaW1pdF0uZGVmYXVsdCwKKyAg
ICAgICAgJ0RldmljZXMgcmVwb3J0ZWQgbGltaXQgc2hvdWxkIG1hdGNoIHRoZSBkZWZhdWx0IGxp
bWl0JworICAgICAgKTsKKyAgICB9IGVsc2UgeworICAgICAgdC5zaG91bGRSZWplY3QoJ09wZXJh
dGlvbkVycm9yJywgYWRhcHRlci5yZXF1ZXN0RGV2aWNlKHsgcmVxdWlyZWRMaW1pdHMgfSkpOwor
ICAgIH0KICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvYXBpL29wZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9jb3B5VGV4dHVyZVRvVGV4dHVyZS5z
cGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRp
b24vY29tbWFuZF9idWZmZXIvY29weVRleHR1cmVUb1RleHR1cmUuc3BlYy5qcwppbmRleCBkY2I5
YjJlZTJkZDUuLmM5YzQwNDc3YjQ4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vY29tbWFuZF9idWZmZXIvY29weVRleHR1cmVU
b1RleHR1cmUuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvYXBpL29wZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9jb3B5VGV4dHVyZVRvVGV4dHVyZS5zcGVj
LmpzCkBAIC0zMzcsNyArMzM3LDcgQEAgY2xhc3MgRiBleHRlbmRzIEdQVVRlc3QgewogICAgICAg
ICBtb2R1bGU6IHRoaXMuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICAgICAgY29k
ZTogYAogICAgICAgICAgICAgc3RydWN0IFBhcmFtcyB7Ci0gICAgICAgICAgICAgIGNvcHlMYXll
cjogZjMyOworICAgICAgICAgICAgICBjb3B5TGF5ZXI6IGYzMgogICAgICAgICAgICAgfTsKICAg
ICAgICAgICAgIEBncm91cCgwKSBAYmluZGluZygwKSB2YXI8dW5pZm9ybT4gcGFyYW06IFBhcmFt
czsKICAgICAgICAgICAgIEBzdGFnZSh2ZXJ0ZXgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9pbWFn
ZV9jb3B5LnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L29wZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9pbWFnZV9jb3B5LnNwZWMuanMKaW5kZXggYzJiMmIx
NjJhNTljLi4wZTQ4NTUxNzBjMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL2NvbW1hbmRfYnVmZmVyL2ltYWdlX2NvcHkuc3Bl
Yy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJh
dGlvbi9jb21tYW5kX2J1ZmZlci9pbWFnZV9jb3B5LnNwZWMuanMKQEAgLTQzLDcgKzQzLDYgQEAg
aW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdv
cmsvdGVzdF9ncm91cC5qcyc7CiBpbXBvcnQgeyBhc3NlcnQsIG1lbWNweSwgdW5yZWFjaGFibGUg
fSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsKIGltcG9ydCB7CiAgIGtU
ZXh0dXJlRm9ybWF0SW5mbywKLSAga1NpemVkVGV4dHVyZUZvcm1hdHMsCiAgIGtEZXB0aFN0ZW5j
aWxGb3JtYXRzLAogICBrTWluRHluYW1pY0J1ZmZlck9mZnNldEFsaWdubWVudCwKICAga0J1ZmZl
clNpemVBbGlnbm1lbnQsCkBAIC01MSw2ICs1MCw3IEBAIGltcG9ydCB7CiAgIGRlcHRoU3RlbmNp
bEZvcm1hdEFzcGVjdFNpemUsCiAgIGtUZXh0dXJlRGltZW5zaW9ucywKICAgdGV4dHVyZURpbWVu
c2lvbkFuZEZvcm1hdENvbXBhdGlibGUsCisgIGtDb2xvclRleHR1cmVGb3JtYXRzLAogfSBmcm9t
ICcuLi8uLi8uLi9jYXBhYmlsaXR5X2luZm8uanMnOwogaW1wb3J0IHsgR1BVVGVzdCB9IGZyb20g
Jy4uLy4uLy4uL2dwdV90ZXN0LmpzJzsKIGltcG9ydCB7IG1ha2VCdWZmZXJXaXRoQ29udGVudHMg
fSBmcm9tICcuLi8uLi8uLi91dGlsL2J1ZmZlci5qcyc7CkBAIC04NSw3ICs4NSw3IEBAIGNvbnN0
IGtFeGNsdWRlZEZvcm1hdHMgPSBuZXcgU2V0KFsKICAgJ3JnYmEzMmZsb2F0JywKIF0pOwogCi1j
b25zdCBrV29ya2luZ1RleHR1cmVGb3JtYXRzID0ga1NpemVkVGV4dHVyZUZvcm1hdHMuZmlsdGVy
KHggPT4gIWtFeGNsdWRlZEZvcm1hdHMuaGFzKHgpKTsKK2NvbnN0IGtXb3JraW5nQ29sb3JUZXh0
dXJlRm9ybWF0cyA9IGtDb2xvclRleHR1cmVGb3JtYXRzLmZpbHRlcih4ID0+ICFrRXhjbHVkZWRG
b3JtYXRzLmhhcyh4KSk7CiAKIGNsYXNzIEltYWdlQ29weVRlc3QgZXh0ZW5kcyBHUFVUZXN0IHsK
ICAgLyoqIE9mZnNldCBmb3IgYSBwYXJ0aWN1bGFyIHRleGVsIGluIHRoZSBsaW5lYXIgdGV4dHVy
ZSBkYXRhICovCkBAIC03MDIsNyArNzAyLDcgQEAgY2xhc3MgSW1hZ2VDb3B5VGVzdCBleHRlbmRz
IEdQVVRlc3QgewogICAgIHRoaXMuZXhwZWN0R1BVQnVmZmVyVmFsdWVzRXF1YWwob3V0cHV0QnVm
ZmVyLCBleHBlY3RlZERhdGEpOwogICB9CiAKLSAgLy8gTUFJTlRFTkFOQ0VfVE9ETyhjcmJ1Zy5j
b20vZGF3bi84NjgpOiBSZXZpc2l0IHRoaXMgd2hlbiBjb25zb2xpZGF0aW5nIHRleHR1cmUgaGVs
cGVycy4KKyAgLy8gTUFJTlRFTkFOQ0VfVE9ETygjODgxKTogTWlncmF0ZSB0aGlzIGludG8gdGhl
IHRleHR1cmVfb2sgaGVscGVycy4KICAgYXN5bmMgY2hlY2tTdGVuY2lsVGV4dHVyZUNvbnRlbnQo
CiAgICAgc3RlbmNpbFRleHR1cmUsCiAgICAgc3RlbmNpbFRleHR1cmVTaXplLApAQCAtNzY4LDcg
Kzc2OCw3IEBAIGNsYXNzIEltYWdlQ29weVRlc3QgZXh0ZW5kcyBHUFVUZXN0IHsKICAgICAgICAg
bW9kdWxlOiB0aGlzLmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoewogICAgICAgICAgIGNvZGU6
IGAKICAgICAgICAgICAgIHN0cnVjdCBQYXJhbXMgewotICAgICAgICAgICAgICBzdGVuY2lsQml0
SW5kZXg6IHUzMjsKKyAgICAgICAgICAgICAgc3RlbmNpbEJpdEluZGV4OiB1MzIKICAgICAgICAg
ICAgIH07CiAgICAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoMCkgdmFyPHVuaWZvcm0+IHBh
cmFtOiBQYXJhbXM7CiAgICAgICAgICAgICBAc3RhZ2UoZnJhZ21lbnQpCkBAIC04MjUsMTEgKzgy
NSwxMiBAQCBjbGFzcyBJbWFnZUNvcHlUZXN0IGV4dGVuZHMgR1BVVGVzdCB7CiAgICAgLy8gd2ls
bCAiQ29weSIgb25lIGJpdCBvZiB0aGUgc3RlbmNpbCB2YWx1ZSBpbnRvIHRoZSBjb2xvciBhdHRh
Y2htZW50LiBUaGUgYml0IG9mIHRoZSBzdGVuY2lsCiAgICAgLy8gdmFsdWUgaXMgc3BlY2lmaWVk
IGJ5IHNldFN0ZW5jaWxSZWZlcmVuY2UoKS4KICAgICBjb25zdCBjb3B5RnJvbU91dHB1dFRleHR1
cmVMYXlvdXQgPSBnZXRUZXh0dXJlQ29weUxheW91dCgKLSAgICAgICdzdGVuY2lsOCcsCisgICAg
ICBzdGVuY2lsVGV4dHVyZUZvcm1hdCwKICAgICAgICcyZCcsCiAgICAgICBbc3RlbmNpbFRleHR1
cmVTaXplWzBdLCBzdGVuY2lsVGV4dHVyZVNpemVbMV0sIDFdLAogICAgICAgewogICAgICAgICBt
aXBMZXZlbDogc3RlbmNpbFRleHR1cmVNaXBMZXZlbCwKKyAgICAgICAgYXNwZWN0OiAnc3RlbmNp
bC1vbmx5JywKICAgICAgIH0KICAgICApOwogCkBAIC05MzUsNyArOTM2LDcgQEAgY2xhc3MgSW1h
Z2VDb3B5VGVzdCBleHRlbmRzIEdQVVRlc3QgewogICAgIH0KICAgfQogCi0gIC8vIE1BSU5URU5B
TkNFX1RPRE8oY3JidWcuY29tL2Rhd24vODY4KTogUmV2aXNpdCB0aGlzIHdoZW4gY29uc29saWRh
dGluZyB0ZXh0dXJlIGhlbHBlcnMuCisgIC8vIE1BSU5URU5BTkNFX1RPRE8oIzg4MSk6IENvbnNp
ZGVyIGlmIHRoaXMgY2FuIGJlIHNpbXBsaWZpZWQvZW5jYXBzdWxhdGVkIHVzaW5nIFRleGVsVmll
dy4KICAgaW5pdGlhbGl6ZURlcHRoQXNwZWN0V2l0aFJlbmRlcmluZygKICAgICBkZXB0aFRleHR1
cmUsCiAgICAgZGVwdGhGb3JtYXQsCkBAIC0xMDcwLDkgKzEwNzEsOSBAQCBjbGFzcyBJbWFnZUNv
cHlUZXN0IGV4dGVuZHMgR1BVVGVzdCB7CiAgICAgLy8gWzJdOiBuZWVkIHRvIGNvbnZlcnQgdGhl
IGZsb2F0MzIgdmFsdWVzIGluIGluaXRpYWxEYXRhIGludG8gdGhlIG9uZXMgY29tcGF0aWJsZQog
ICAgIC8vIHRvIHRoZSBkZXB0aCBhc3BlY3Qgb2YgZGVwdGhGb3JtYXRzIHdoZW4gZGVwdGgxNnVu
b3JtIGFuZCBkZXB0aDI0dW5vcm0tc3RlbmNpbDggYXJlIHN1cHBvcnRlZAogICAgIC8vIGJ5IHRo
ZSBicm93c2Vycy4KLSAgICBhc3NlcnQoZm9ybWF0ICE9PSAnZGVwdGgxNnVub3JtJyAmJiBmb3Jt
YXQgIT09ICdkZXB0aDI0dW5vcm0tc3RlbmNpbDgnKTsKKyAgICBhc3NlcnQoZm9ybWF0ICE9PSAn
ZGVwdGgyNHVub3JtLXN0ZW5jaWw4Jyk7CiAKLSAgICAvLyBHZW5lcmF0ZSB0aGUgaW5pdGlhbCBk
ZXB0aCBkYXRhCisgICAgLy8gR2VuZXJhdGUgdGhlIGluaXRpYWwgZGVwdGggZGF0YSB1cGxvYWRl
ZCB0byB0aGUgdGV4dHVyZSBhcyBmbG9hdDMyLgogICAgIGNvbnN0IGluaXRpYWxEYXRhID0gbmV3
IEZsb2F0MzJBcnJheShjb3B5U2l6ZVswXSAqIGNvcHlTaXplWzFdICogY29weVNpemVbMl0pOwog
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5pdGlhbERhdGEubGVuZ3RoOyArK2kpIHsKICAgICAg
IGNvbnN0IGJhc2VWYWx1ZSA9IDAuMDUgKiBpOwpAQCAtMTA4Miw2ICsxMDgzLDIwIEBAIGNsYXNz
IEltYWdlQ29weVRlc3QgZXh0ZW5kcyBHUFVUZXN0IHsKICAgICAgIGFzc2VydChpbml0aWFsRGF0
YVtpXSA+PSAwICYmIGluaXRpYWxEYXRhW2ldIDw9IDEpOwogICAgIH0KIAorICAgIC8vIFRoZSBk
YXRhIHVwbG9hZGVkIHRvIHRoZSB0ZXh0dXJlLCB1c2luZyB0aGUgYnl0ZSBwYXR0ZXJuIG9mIHRo
ZSBmb3JtYXQuCisgICAgbGV0IGZvcm1hdEluaXRpYWxEYXRhID0gaW5pdGlhbERhdGE7CisKKyAg
ICAvLyBGb3IgdW5vcm0gZGVwdGggZm9ybWF0cywgcmVwbGFjZSB0aGUgdXBsb2FkZWQgZGVwdGgg
ZGF0YSB3aXRoIHF1YW50aXplZCBkYXRhIHRvIGF2b2lkCisgICAgLy8gcm91bmRpbmcgaXNzdWVz
IHdoZW4gY29udmVydGluZyBmcm9tIDMyZmxvYXQgdG8gMTZ1bm9ybS4KKyAgICBpZiAoZm9ybWF0
ID09PSAnZGVwdGgxNnVub3JtJykgeworICAgICAgY29uc3QgdTE2RGF0YSA9IG5ldyBVaW50MTZB
cnJheShpbml0aWFsRGF0YS5sZW5ndGgpOworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbml0
aWFsRGF0YS5sZW5ndGg7IGkrKykgeworICAgICAgICB1MTZEYXRhW2ldID0gaW5pdGlhbERhdGFb
aV0gKiA2NTUzNTsKKyAgICAgICAgaW5pdGlhbERhdGFbaV0gPSB1MTZEYXRhW2ldIC8gNjU1MzUu
MDsKKyAgICAgIH0KKyAgICAgIGZvcm1hdEluaXRpYWxEYXRhID0gdTE2RGF0YTsKKyAgICB9CisK
ICAgICAvLyBJbml0aWFsaXplIHRoZSBkZXB0aCBhc3BlY3Qgb2YgdGhlIHNvdXJjZSB0ZXh0dXJl
CiAgICAgY29uc3QgZGVwdGhUZXh0dXJlID0gdGhpcy5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CiAg
ICAgICBmb3JtYXQsCkBAIC0xMTE4LDYgKzExMzMsNyBAQCBjbGFzcyBJbWFnZUNvcHlUZXN0IGV4
dGVuZHMgR1BVVGVzdCB7CiAgICAgICB7CiAgICAgICAgIHRleHR1cmU6IGRlcHRoVGV4dHVyZSwK
ICAgICAgICAgbWlwTGV2ZWwsCisgICAgICAgIGFzcGVjdDogJ2RlcHRoLW9ubHknLAogICAgICAg
fSwKIAogICAgICAgewpAQCAtMTE0MCw3ICsxMTU2LDcgQEAgY2xhc3MgSW1hZ2VDb3B5VGVzdCBl
eHRlbmRzIEdQVVRlc3QgewogICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBjb3B5U2l6ZVsxXTsg
Kyt5KSB7CiAgICAgICAgIG1lbWNweSgKICAgICAgICAgICB7Ci0gICAgICAgICAgICBzcmM6IGlu
aXRpYWxEYXRhLAorICAgICAgICAgICAgc3JjOiBmb3JtYXRJbml0aWFsRGF0YSwKICAgICAgICAg
ICAgIHN0YXJ0OiBiYXNlSW5pdGlhbERhdGFPZmZzZXQgKyB5ICogY29weVNpemVbMF0sCiAgICAg
ICAgICAgICBsZW5ndGg6IGNvcHlTaXplWzBdLAogICAgICAgICAgIH0sCkBAIC0xMjI0LDcgKzEy
NDAsNyBAQCBieXRlcyBpbiBjb3B5IHdvcmtzIGZvciBldmVyeSBmb3JtYXQuCiAgIC5wYXJhbXMo
dSA9PgogICAgIHUKICAgICAgIC5jb21iaW5lV2l0aFBhcmFtcyhrTWV0aG9kc1RvVGVzdCkKLSAg
ICAgIC5jb21iaW5lKCdmb3JtYXQnLCBrV29ya2luZ1RleHR1cmVGb3JtYXRzKQorICAgICAgLmNv
bWJpbmUoJ2Zvcm1hdCcsIGtXb3JraW5nQ29sb3JUZXh0dXJlRm9ybWF0cykKICAgICAgIC5maWx0
ZXIoZm9ybWF0Q2FuQmVUZXN0ZWQpCiAgICAgICAuY29tYmluZSgnZGltZW5zaW9uJywga1RleHR1
cmVEaW1lbnNpb25zKQogICAgICAgLmZpbHRlcigoeyBkaW1lbnNpb24sIGZvcm1hdCB9KSA9PiB0
ZXh0dXJlRGltZW5zaW9uQW5kRm9ybWF0Q29tcGF0aWJsZShkaW1lbnNpb24sIGZvcm1hdCkpCkBA
IC0xMzE2LDEyICsxMzMyLDEzIEBAIHdvcmtzIGZvciBldmVyeSBmb3JtYXQgd2l0aCAyZCBhbmQg
MmQtYXJyYXkgdGV4dHVyZXMuCiAgICAgb2Zmc2V0ID4gYnl0ZXNJbkFDb21wbGV0ZUNvcHlJbWFn
ZQogCiAgIFRPRE86IENvdmVyIHRoZSBzcGVjaWFsIGNvZGUgcGF0aHMgZm9yIDNEIHRleHR1cmVz
IGluIEQzRDEyLgorICBUT0RPOiBNYWtlIGEgdmFyaWFudCBmb3IgZGVwdGgtc3RlbmNpbCBmb3Jt
YXRzLgogYAogICApCiAgIC5wYXJhbXModSA9PgogICAgIHUKICAgICAgIC5jb21iaW5lV2l0aFBh
cmFtcyhrTWV0aG9kc1RvVGVzdCkKLSAgICAgIC5jb21iaW5lKCdmb3JtYXQnLCBrV29ya2luZ1Rl
eHR1cmVGb3JtYXRzKQorICAgICAgLmNvbWJpbmUoJ2Zvcm1hdCcsIGtXb3JraW5nQ29sb3JUZXh0
dXJlRm9ybWF0cykKICAgICAgIC5maWx0ZXIoZm9ybWF0Q2FuQmVUZXN0ZWQpCiAgICAgICAuY29t
YmluZSgnZGltZW5zaW9uJywga1RleHR1cmVEaW1lbnNpb25zKQogICAgICAgLmZpbHRlcigoeyBk
aW1lbnNpb24sIGZvcm1hdCB9KSA9PiB0ZXh0dXJlRGltZW5zaW9uQW5kRm9ybWF0Q29tcGF0aWJs
ZShkaW1lbnNpb24sIGZvcm1hdCkpCkBAIC0xMzkyLDcgKzE0MDksNyBAQCBmb3IgYWxsIGZvcm1h
dHMuIFdlIHBhc3Mgb3JpZ2luIGFuZCBjb3B5RXh0ZW50IGFzIFtudW1iZXIsIG51bWJlciwgbnVt
YmVyXS5gCiAgIC5wYXJhbXModSA9PgogICAgIHUKICAgICAgIC5jb21iaW5lV2l0aFBhcmFtcyhr
TWV0aG9kc1RvVGVzdCkKLSAgICAgIC5jb21iaW5lKCdmb3JtYXQnLCBrV29ya2luZ1RleHR1cmVG
b3JtYXRzKQorICAgICAgLmNvbWJpbmUoJ2Zvcm1hdCcsIGtXb3JraW5nQ29sb3JUZXh0dXJlRm9y
bWF0cykKICAgICAgIC5maWx0ZXIoZm9ybWF0Q2FuQmVUZXN0ZWQpCiAgICAgICAuY29tYmluZSgn
ZGltZW5zaW9uJywga1RleHR1cmVEaW1lbnNpb25zKQogICAgICAgLmZpbHRlcigoeyBkaW1lbnNp
b24sIGZvcm1hdCB9KSA9PiB0ZXh0dXJlRGltZW5zaW9uQW5kRm9ybWF0Q29tcGF0aWJsZShkaW1l
bnNpb24sIGZvcm1hdCkpCkBAIC0xNTM5LDEyICsxNTU2LDE0IEBAIGcudGVzdCgnbWlwX2xldmVs
cycpCiAgIC0gRm9yIDNEIHRleHR1cmVzIHRlc3QgY29weWluZyB0byBhIHN1Yi1yYW5nZSBvZiB0
aGUgZGVwdGguCiAKIFRlc3RzIGJvdGggMkQgYW5kIDNEIHRleHR1cmVzLiAxRCB0ZXh0dXJlcyBh
cmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgY2FuIG9ubHkgaGF2ZSBvbmUgbWlwIGxldmVsLgorCitU
T0RPOiBNYWtlIGEgdmFyaWFudCBmb3IgZGVwdGgtc3RlbmNpbCBmb3JtYXRzLgogICBgCiAgICkK
ICAgLnBhcmFtcyh1ID0+CiAgICAgdQogICAgICAgLmNvbWJpbmVXaXRoUGFyYW1zKGtNZXRob2Rz
VG9UZXN0KQotICAgICAgLmNvbWJpbmUoJ2Zvcm1hdCcsIGtXb3JraW5nVGV4dHVyZUZvcm1hdHMp
CisgICAgICAuY29tYmluZSgnZm9ybWF0Jywga1dvcmtpbmdDb2xvclRleHR1cmVGb3JtYXRzKQog
ICAgICAgLmZpbHRlcihmb3JtYXRDYW5CZVRlc3RlZCkKICAgICAgIC5jb21iaW5lKCdkaW1lbnNp
b24nLCBbJzJkJywgJzNkJ10pCiAgICAgICAuZmlsdGVyKCh7IGRpbWVuc2lvbiwgZm9ybWF0IH0p
ID0+IHRleHR1cmVEaW1lbnNpb25BbmRGb3JtYXRDb21wYXRpYmxlKGRpbWVuc2lvbiwgZm9ybWF0
KSkKQEAgLTE1ODcsNyArMTYwNiw3IEBAIFRlc3RzIGJvdGggMkQgYW5kIDNEIHRleHR1cmVzLiAx
RCB0ZXh0dXJlcyBhcmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgY2FuIG9ubHkgaGF2CiAgICAgICAg
ICAgY29weVNpemVJbkJsb2NrczogeyB3aWR0aDogNSwgaGVpZ2h0OiA0LCBkZXB0aE9yQXJyYXlM
YXllcnM6IDIgfSwKICAgICAgICAgICBvcmlnaW5JbkJsb2NrczogeyB4OiAzLCB5OiAyLCB6OiAx
IH0sCiAgICAgICAgICAgX21pcFNpemVJbkJsb2NrczogeyB3aWR0aDogOSwgaGVpZ2h0OiA3LCBk
ZXB0aE9yQXJyYXlMYXllcnM6IDMgfSwKLSAgICAgICAgICBtaXBMZXZlbDogNSwKKyAgICAgICAg
ICBtaXBMZXZlbDogNCwKICAgICAgICAgfSwKIAogICAgICAgICAvLyBvcmlnaW4gKyBjb3B5U2l6
ZSA8IHRleHR1cmVQaHlzaWNhbFNpemVBdE1pcExldmVsIGZvciBhbGwgY29vcmRpbmF0ZXMKQEAg
LTE1OTUsNyArMTYxNCw3IEBAIFRlc3RzIGJvdGggMkQgYW5kIDNEIHRleHR1cmVzLiAxRCB0ZXh0
dXJlcyBhcmUgc2tpcHBlZCBiZWNhdXNlIHRoZXkgY2FuIG9ubHkgaGF2CiAgICAgICAgICAgY29w
eVNpemVJbkJsb2NrczogeyB3aWR0aDogNSwgaGVpZ2h0OiA0LCBkZXB0aE9yQXJyYXlMYXllcnM6
IDIgfSwKICAgICAgICAgICBvcmlnaW5JbkJsb2NrczogeyB4OiAzLCB5OiAyLCB6OiAxIH0sCiAg
ICAgICAgICAgX21pcFNpemVJbkJsb2NrczogeyB3aWR0aDogOSwgaGVpZ2h0OiA3LCBkZXB0aE9y
QXJyYXlMYXllcnM6IDQgfSwKLSAgICAgICAgICBtaXBMZXZlbDogNiwKKyAgICAgICAgICBtaXBM
ZXZlbDogNCwKICAgICAgICAgfSwKICAgICAgIF0pCiAgICAgICAuZXhwYW5kKCd0ZXh0dXJlU2l6
ZScsIGdlbmVyYXRlVGVzdFRleHR1cmVTaXplcykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL2NvbW1hbmRfYnVmZmVyL3Byb2dy
YW1tYWJsZS9wcm9ncmFtbWFibGVfc3RhdGVfdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL2NvbW1hbmRfYnVmZmVyL3Byb2dyYW1tYWJs
ZS9wcm9ncmFtbWFibGVfc3RhdGVfdGVzdC5qcwppbmRleCA2OTViMWRiOTEwNTkuLjRmNDU2NDhh
NWRlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2Fw
aS9vcGVyYXRpb24vY29tbWFuZF9idWZmZXIvcHJvZ3JhbW1hYmxlL3Byb2dyYW1tYWJsZV9zdGF0
ZV90ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
b3BlcmF0aW9uL2NvbW1hbmRfYnVmZmVyL3Byb2dyYW1tYWJsZS9wcm9ncmFtbWFibGVfc3RhdGVf
dGVzdC5qcwpAQCAtNDksNyArNDksNyBAQCBleHBvcnQgY2xhc3MgUHJvZ3JhbW1hYmxlU3RhdGVU
ZXN0IGV4dGVuZHMgR1BVVGVzdCB7CiAgICAgc3dpdGNoIChlbmNvZGVyVHlwZSkgewogICAgICAg
Y2FzZSAnY29tcHV0ZSBwYXNzJzogewogICAgICAgICBjb25zdCB3Z3NsID0gYHN0cnVjdCBEYXRh
IHsKLSAgICAgICAgICAgIHZhbHVlIDogaTMyOworICAgICAgICAgICAgdmFsdWUgOiBpMzIKICAg
ICAgICAgICB9OwogCiAgICAgICAgICAgQGdyb3VwKCR7Z3JvdXBzLmF9KSBAYmluZGluZygwKSB2
YXI8c3RvcmFnZT4gYSA6IERhdGE7CkBAIC04Nyw3ICs4Nyw3IEBAIGV4cG9ydCBjbGFzcyBQcm9n
cmFtbWFibGVTdGF0ZVRlc3QgZXh0ZW5kcyBHUFVUZXN0IHsKIAogICAgICAgICAgIGZyYWdtZW50
OiBgCiAgICAgICAgICAgICBzdHJ1Y3QgRGF0YSB7Ci0gICAgICAgICAgICAgIHZhbHVlIDogaTMy
OworICAgICAgICAgICAgICB2YWx1ZSA6IGkzMgogICAgICAgICAgICAgfTsKIAogICAgICAgICAg
ICAgQGdyb3VwKCR7Z3JvdXBzLmF9KSBAYmluZGluZygwKSB2YXI8c3RvcmFnZT4gYSA6IERhdGE7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29w
ZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9yZW5kZXIvc3RhdGVfdHJhY2tpbmcuc3BlYy5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL2NvbW1hbmRf
YnVmZmVyL3JlbmRlci9zdGF0ZV90cmFja2luZy5zcGVjLmpzCmluZGV4IDgwNmJlYjRkODU0My4u
YTZiYWRlNDY3NWE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvYXBpL29wZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9yZW5kZXIvc3RhdGVfdHJhY2tpbmcu
c3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29w
ZXJhdGlvbi9jb21tYW5kX2J1ZmZlci9yZW5kZXIvc3RhdGVfdHJhY2tpbmcuc3BlYy5qcwpAQCAt
MTYsMTIgKzE2LDEyIEBAIGNsYXNzIFZlcnRleEFuZEluZGV4U3RhdGVUcmFja2luZ1Rlc3QgZXh0
ZW5kcyBHUFVUZXN0IHsKICAgICAgICAgbW9kdWxlOiB0aGlzLmRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoewogICAgICAgICAgIGNvZGU6IGAKICAgICAgICAgc3RydWN0IElucHV0cyB7Ci0gICAg
ICAgICAgQGxvY2F0aW9uKDApIHZlcnRleFBvc2l0aW9uIDogZjMyOwotICAgICAgICAgIEBsb2Nh
dGlvbigxKSB2ZXJ0ZXhDb2xvciA6IHZlYzQ8ZjMyPjsKKyAgICAgICAgICBAbG9jYXRpb24oMCkg
dmVydGV4UG9zaXRpb24gOiBmMzIsCisgICAgICAgICAgQGxvY2F0aW9uKDEpIHZlcnRleENvbG9y
IDogdmVjNDxmMzI+LAogICAgICAgICB9OwogICAgICAgICBzdHJ1Y3QgT3V0cHV0cyB7Ci0gICAg
ICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0aW9uIDogdmVjNDxmMzI+OwotICAgICAgICAg
IEBsb2NhdGlvbigwKSBjb2xvciA6IHZlYzQ8ZjMyPjsKKyAgICAgICAgICBAYnVpbHRpbihwb3Np
dGlvbikgcG9zaXRpb24gOiB2ZWM0PGYzMj4sCisgICAgICAgICAgQGxvY2F0aW9uKDApIGNvbG9y
IDogdmVjNDxmMzI+LAogICAgICAgICB9OwogICAgICAgICBAc3RhZ2UodmVydGV4KQogICAgICAg
ICBmbiBtYWluKGlucHV0IDogSW5wdXRzKS0+IE91dHB1dHMgewpAQCAtNTgsNyArNTgsNyBAQCBj
bGFzcyBWZXJ0ZXhBbmRJbmRleFN0YXRlVHJhY2tpbmdUZXN0IGV4dGVuZHMgR1BVVGVzdCB7CiAg
ICAgICAgIG1vZHVsZTogdGhpcy5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAgICAg
ICBjb2RlOiBgCiAgICAgICAgIHN0cnVjdCBJbnB1dCB7Ci0gICAgICAgICAgQGxvY2F0aW9uKDAp
IGNvbG9yIDogdmVjNDxmMzI+OworICAgICAgICAgIEBsb2NhdGlvbigwKSBjb2xvciA6IHZlYzQ8
ZjMyPgogICAgICAgICB9OwogICAgICAgICBAc3RhZ2UoZnJhZ21lbnQpCiAgICAgICAgIGZuIG1h
aW4oaW5wdXQgOiBJbnB1dCkgLT4gQGxvY2F0aW9uKDApIHZlYzQ8ZjMyPiB7CkBAIC00MTAsNyAr
NDEwLDcgQEAgZy50ZXN0KCdzZXRfdmVydGV4X2J1ZmZlcl9idXRfbm90X3VzZWRfaW5fZHJhdycp
CiAgICAgICBtb2R1bGU6IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICAgIGNv
ZGU6IGAKICAgICAgIHN0cnVjdCBJbnB1dCB7Ci0gICAgICAgIEBsb2NhdGlvbigwKSBjb2xvciA6
IHZlYzQ8ZjMyPjsKKyAgICAgICAgQGxvY2F0aW9uKDApIGNvbG9yIDogdmVjNDxmMzI+CiAgICAg
ICB9OwogICAgICAgQHN0YWdlKGZyYWdtZW50KQogICAgICAgZm4gbWFpbihpbnB1dCA6IElucHV0
KSAtPiBAbG9jYXRpb24oMCkgdmVjNDxmMzI+IHsKQEAgLTQyOCwxMiArNDI4LDEyIEBAIGcudGVz
dCgnc2V0X3ZlcnRleF9idWZmZXJfYnV0X25vdF91c2VkX2luX2RyYXcnKQogICAgICAgICBtb2R1
bGU6IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICAgICAgY29kZTogYAogICAg
ICAgICBzdHJ1Y3QgSW5wdXRzIHsKLSAgICAgICAgICBAbG9jYXRpb24oMCkgdmVydGV4Q29sb3Ig
OiB2ZWM0PGYzMj47Ci0gICAgICAgICAgQGxvY2F0aW9uKDEpIHZlcnRleFBvc2l0aW9uIDogZjMy
OworICAgICAgICAgIEBsb2NhdGlvbigwKSB2ZXJ0ZXhDb2xvciA6IHZlYzQ8ZjMyPiwKKyAgICAg
ICAgICBAbG9jYXRpb24oMSkgdmVydGV4UG9zaXRpb24gOiBmMzIsCiAgICAgICAgIH07CiAgICAg
ICAgIHN0cnVjdCBPdXRwdXRzIHsKLSAgICAgICAgICBAYnVpbHRpbihwb3NpdGlvbikgcG9zaXRp
b24gOiB2ZWM0PGYzMj47Ci0gICAgICAgICAgQGxvY2F0aW9uKDApIGNvbG9yIDogdmVjNDxmMzI+
OworICAgICAgICAgIEBidWlsdGluKHBvc2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8ZjMyPiwKKyAg
ICAgICAgICBAbG9jYXRpb24oMCkgY29sb3IgOiB2ZWM0PGYzMj4sCiAgICAgICAgIH07CiAgICAg
ICAgIEBzdGFnZSh2ZXJ0ZXgpCiAgICAgICAgIGZuIG1haW4oaW5wdXQgOiBJbnB1dHMpLT4gT3V0
cHV0cyB7CkBAIC00ODIsMTIgKzQ4MiwxMiBAQCBnLnRlc3QoJ3NldF92ZXJ0ZXhfYnVmZmVyX2J1
dF9ub3RfdXNlZF9pbl9kcmF3JykKICAgICAgICAgbW9kdWxlOiB0LmRldmljZS5jcmVhdGVTaGFk
ZXJNb2R1bGUoewogICAgICAgICAgIGNvZGU6IGAKICAgICAgICAgc3RydWN0IElucHV0cyB7Ci0g
ICAgICAgICAgQGJ1aWx0aW4odmVydGV4X2luZGV4KSB2ZXJ0ZXhJbmRleCA6IHUzMjsKLSAgICAg
ICAgICBAbG9jYXRpb24oMCkgdmVydGV4Q29sb3IgOiB2ZWM0PGYzMj47CisgICAgICAgICAgQGJ1
aWx0aW4odmVydGV4X2luZGV4KSB2ZXJ0ZXhJbmRleCA6IHUzMiwKKyAgICAgICAgICBAbG9jYXRp
b24oMCkgdmVydGV4Q29sb3IgOiB2ZWM0PGYzMj4sCiAgICAgICAgIH07CiAgICAgICAgIHN0cnVj
dCBPdXRwdXRzIHsKLSAgICAgICAgICBAYnVpbHRpbihwb3NpdGlvbikgcG9zaXRpb24gOiB2ZWM0
PGYzMj47Ci0gICAgICAgICAgQGxvY2F0aW9uKDApIGNvbG9yIDogdmVjNDxmMzI+OworICAgICAg
ICAgIEBidWlsdGluKHBvc2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8ZjMyPiwKKyAgICAgICAgICBA
bG9jYXRpb24oMCkgY29sb3IgOiB2ZWM0PGYzMj4sCiAgICAgICAgIH07CiAgICAgICAgIEBzdGFn
ZSh2ZXJ0ZXgpCiAgICAgICAgIGZuIG1haW4oaW5wdXQgOiBJbnB1dHMpLT4gT3V0cHV0cyB7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJh
dGlvbi9jb21wdXRlL2Jhc2ljLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL29wZXJhdGlvbi9jb21wdXRlL2Jhc2ljLnNwZWMuanMKaW5kZXggNTJhMjEy
ODkxMTAwLi42NzA0MDM2Y2VmYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL2NvbXB1dGUvYmFzaWMuc3BlYy5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9jb21wdXRl
L2Jhc2ljLnNwZWMuanMKQEAgLTQsMTYgKzQsMTYgQEAKIEJhc2ljIGNvbW1hbmQgYnVmZmVyIGNv
bXB1dGUgdGVzdHMuCiBgOwogaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4uLy4u
Ly4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7Ci1pbXBvcnQgeyBEZWZhdWx0TGlt
aXRzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzLmpzJzsKK2ltcG9ydCB7IGtMaW1pdEluZm8g
fSBmcm9tICcuLi8uLi8uLi9jYXBhYmlsaXR5X2luZm8uanMnOwogaW1wb3J0IHsgR1BVVGVzdCB9
IGZyb20gJy4uLy4uLy4uL2dwdV90ZXN0LmpzJzsKIGltcG9ydCB7IGNoZWNrRWxlbWVudHNFcXVh
bEdlbmVyYXRlZCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvY2hlY2tfY29udGVudHMuanMnOwogCiBl
eHBvcnQgY29uc3QgZyA9IG1ha2VUZXN0R3JvdXAoR1BVVGVzdCk7CiAKIGNvbnN0IGtNYXhDb21w
dXRlV29ya2dyb3VwU2l6ZSA9IFsKLSAgRGVmYXVsdExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vw
U2l6ZVgsCi0gIERlZmF1bHRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZLAotICBEZWZh
dWx0TGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiwKKyAga0xpbWl0SW5mby5tYXhDb21w
dXRlV29ya2dyb3VwU2l6ZVguZGVmYXVsdCwKKyAga0xpbWl0SW5mby5tYXhDb21wdXRlV29ya2dy
b3VwU2l6ZVkuZGVmYXVsdCwKKyAga0xpbWl0SW5mby5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVou
ZGVmYXVsdCwKIF07CiAKIGcudGVzdCgnbWVtY3B5JykuZm4oYXN5bmMgdCA9PiB7CkBAIC0zMSw3
ICszMSw3IEBAIGcudGVzdCgnbWVtY3B5JykuZm4oYXN5bmMgdCA9PiB7CiAgICAgICBtb2R1bGU6
IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICAgIGNvZGU6IGAKICAgICAgICAg
ICBzdHJ1Y3QgRGF0YSB7Ci0gICAgICAgICAgICAgIHZhbHVlIDogdTMyOworICAgICAgICAgICAg
ICB2YWx1ZSA6IHUzMgogICAgICAgICAgIH07CiAKICAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRp
bmcoMCkgdmFyPHN0b3JhZ2UsIHJlYWQ+IHNyYyA6IERhdGE7CkBAIC03OSw3ICs3OSw3IEBAIGcu
dGVzdCgnbGFyZ2VfZGlzcGF0Y2gnKQogICAgICAgICAzMTUsCiAgICAgICAgIDYyOCwKICAgICAg
ICAgMjE3OSwKLSAgICAgICAgRGVmYXVsdExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRp
bWVuc2lvbiwKKyAgICAgICAga0xpbWl0SW5mby5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVu
c2lvbi5kZWZhdWx0LAogICAgICAgXSkKIAogICAgICAgLy8gVGVzdCBzb21lIHJlYXNvbmFibGUg
d29ya2dyb3VwIHNpemVzLgpAQCAtMTEyLDcgKzExMiw3IEBAIGcudGVzdCgnbGFyZ2VfZGlzcGF0
Y2gnKQogICAgICAgICBtb2R1bGU6IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAg
ICAgICAgY29kZTogYAogICAgICAgICAgICAgc3RydWN0IE91dHB1dEJ1ZmZlciB7Ci0gICAgICAg
ICAgICAgIHZhbHVlIDogYXJyYXk8dTMyPjsKKyAgICAgICAgICAgICAgdmFsdWUgOiBhcnJheTx1
MzI+CiAgICAgICAgICAgICB9OwogCiAgICAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoMCkg
dmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IGRzdCA6IE91dHB1dEJ1ZmZlcjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9y
eV9zeW5jL2J1ZmZlci9idWZmZXJfc3luY190ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL2J1ZmZlcl9z
eW5jX3Rlc3QuanMKaW5kZXggMTU5YjQzZTk1MGU4Li5mYWY5MDU3ZWM3OTUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9y
eV9zeW5jL2J1ZmZlci9idWZmZXJfc3luY190ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9idWZm
ZXJfc3luY190ZXN0LmpzCkBAIC0xLDIzICsxLDI1MyBAQAogLyoqCiAgKiBBVVRPLUdFTkVSQVRF
RCAtIERPIE5PVCBFRElULiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvY3RzCi0g
KiovIGltcG9ydCB7IGFzc2VydCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi91dGlsL3V0
aWwuanMnOworICoqLyBpbXBvcnQgeyBhc3NlcnQsIHVucmVhY2hhYmxlIH0gZnJvbSAnLi4vLi4v
Li4vLi4vLi4vY29tbW9uL3V0aWwvdXRpbC5qcyc7CiBpbXBvcnQgeyBHUFVUZXN0IH0gZnJvbSAn
Li4vLi4vLi4vLi4vZ3B1X3Rlc3QuanMnOwogaW1wb3J0IHsgY2hlY2tFbGVtZW50c0VxdWFsRWl0
aGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9jaGVja19jb250ZW50cy5qcyc7CiAKLWNvbnN0
IGtTaXplID0gNDsKK2V4cG9ydCBjb25zdCBrQWxsV3JpdGVPcHMgPSBbJ3N0b3JhZ2UnLCAnYjJi
LWNvcHknLCAndDJiLWNvcHknLCAnd3JpdGUtYnVmZmVyJ107CisKK2V4cG9ydCBjb25zdCBrQWxs
UmVhZE9wcyA9IFsKKyAgJ2lucHV0LXZlcnRleCcsCisgICdpbnB1dC1pbmRleCcsCisgICdpbnB1
dC1pbmRpcmVjdCcsCisgICdpbnB1dC1pbmRpcmVjdC1pbmRleCcsCisgICdpbnB1dC1pbmRpcmVj
dC1kaXNwYXRjaCcsCisKKyAgJ2NvbnN0YW50LXVuaWZvcm0nLAorCisgICdzdG9yYWdlLXJlYWQn
LAorCisgICdiMmItY29weScsCisgICdiMnQtY29weScsCitdOworCitjb25zdCBrT3BJbmZvID0g
eworICAnd3JpdGUtYnVmZmVyJzogeworICAgIGNvbnRleHRzOiBbJ3F1ZXVlJ10sCisgIH0sCisK
KyAgJ2IydC1jb3B5JzogeworICAgIGNvbnRleHRzOiBbJ2NvbW1hbmQtZW5jb2RlciddLAorICB9
LAorCisgICdiMmItY29weSc6IHsKKyAgICBjb250ZXh0czogWydjb21tYW5kLWVuY29kZXInXSwK
KyAgfSwKKworICAndDJiLWNvcHknOiB7CisgICAgY29udGV4dHM6IFsnY29tbWFuZC1lbmNvZGVy
J10sCisgIH0sCisKKyAgc3RvcmFnZTogeworICAgIGNvbnRleHRzOiBbJ2NvbXB1dGUtcGFzcy1l
bmNvZGVyJywgJ3JlbmRlci1wYXNzLWVuY29kZXInLCAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJ10s
CisgIH0sCisKKyAgJ3N0b3JhZ2UtcmVhZCc6IHsKKyAgICBjb250ZXh0czogWydjb21wdXRlLXBh
c3MtZW5jb2RlcicsICdyZW5kZXItcGFzcy1lbmNvZGVyJywgJ3JlbmRlci1idW5kbGUtZW5jb2Rl
ciddLAorICB9LAorCisgICdpbnB1dC12ZXJ0ZXgnOiB7CisgICAgY29udGV4dHM6IFsncmVuZGVy
LXBhc3MtZW5jb2RlcicsICdyZW5kZXItYnVuZGxlLWVuY29kZXInXSwKKyAgfSwKKworICAnaW5w
dXQtaW5kZXgnOiB7CisgICAgY29udGV4dHM6IFsncmVuZGVyLXBhc3MtZW5jb2RlcicsICdyZW5k
ZXItYnVuZGxlLWVuY29kZXInXSwKKyAgfSwKKworICAnaW5wdXQtaW5kaXJlY3QnOiB7CisgICAg
Y29udGV4dHM6IFsncmVuZGVyLXBhc3MtZW5jb2RlcicsICdyZW5kZXItYnVuZGxlLWVuY29kZXIn
XSwKKyAgfSwKKworICAnaW5wdXQtaW5kaXJlY3QtaW5kZXgnOiB7CisgICAgY29udGV4dHM6IFsn
cmVuZGVyLXBhc3MtZW5jb2RlcicsICdyZW5kZXItYnVuZGxlLWVuY29kZXInXSwKKyAgfSwKKwor
ICAnaW5wdXQtaW5kaXJlY3QtZGlzcGF0Y2gnOiB7CisgICAgY29udGV4dHM6IFsnY29tcHV0ZS1w
YXNzLWVuY29kZXInXSwKKyAgfSwKKworICAnY29uc3RhbnQtdW5pZm9ybSc6IHsKKyAgICBjb250
ZXh0czogWydyZW5kZXItcGFzcy1lbmNvZGVyJywgJ3JlbmRlci1idW5kbGUtZW5jb2RlciddLAor
ICB9LAorfTsKKworZXhwb3J0IGZ1bmN0aW9uIGNoZWNrT3BzVmFsaWRGb3JDb250ZXh0KG9wcywg
Y29udGV4dCkgeworICBjb25zdCB2YWxpZCA9CisgICAga09wSW5mb1tvcHNbMF1dLmNvbnRleHRz
LmluY2x1ZGVzKGNvbnRleHRbMF0pICYmIGtPcEluZm9bb3BzWzFdXS5jb250ZXh0cy5pbmNsdWRl
cyhjb250ZXh0WzFdKTsKKyAgaWYgKCF2YWxpZCkgcmV0dXJuIGZhbHNlOworCisgIGlmICgKKyAg
ICBjb250ZXh0WzBdID09PSAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJyB8fAorICAgIGNvbnRleHRb
MF0gPT09ICdyZW5kZXItcGFzcy1lbmNvZGVyJyB8fAorICAgIGNvbnRleHRbMV0gPT09ICdyZW5k
ZXItYnVuZGxlLWVuY29kZXInIHx8CisgICAgY29udGV4dFsxXSA9PT0gJ3JlbmRlci1wYXNzLWVu
Y29kZXInCisgICkgeworICAgIC8vIEluIGEgcmVuZGVyIHBhc3MsIGl0IGlzIGludmFsaWQgdG8g
dXNlIGEgcmVzb3VyY2UgYXMgYm90aCB3cml0YWJsZSBhbmQgYW5vdGhlciB1c2FnZS4KKyAgICAv
LyBBbHNvLCBmb3Igc3RvcmFnZStzdG9yYWdlIHVzYWdlLCB0aGUgYXBwbGljYXRpb24gaXMgb3B0
aW5nIGludG8gcmFjeSBiZWhhdmlvci4KKyAgICAvLyBUaGUgc3RvcmFnZStzdG9yYWdlIGNhc2Ug
aXMgYWxzbyBza2lwcGVkIGFzIHRoZSByZXN1bHRzIGNhbm5vdCBiZSByZWxpYWJseSB0ZXN0ZWQu
CisgICAgY29uc3QgY2hlY2tJbXBsID0gKG9wMSwgb3AyKSA9PiB7CisgICAgICBzd2l0Y2ggKG9w
MSkgeworICAgICAgICBjYXNlICdzdG9yYWdlJzoKKyAgICAgICAgICBzd2l0Y2ggKG9wMikgewor
ICAgICAgICAgICAgY2FzZSAnc3RvcmFnZSc6CisgICAgICAgICAgICBjYXNlICdzdG9yYWdlLXJl
YWQnOgorICAgICAgICAgICAgY2FzZSAnaW5wdXQtdmVydGV4JzoKKyAgICAgICAgICAgIGNhc2Ug
J2lucHV0LWluZGV4JzoKKyAgICAgICAgICAgIGNhc2UgJ2lucHV0LWluZGlyZWN0JzoKKyAgICAg
ICAgICAgIGNhc2UgJ2lucHV0LWluZGlyZWN0LWluZGV4JzoKKyAgICAgICAgICAgIGNhc2UgJ2Nv
bnN0YW50LXVuaWZvcm0nOgorICAgICAgICAgICAgICAvLyBXcml0ZStvdGhlciwgb3IgcmFjeS4K
KyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2FzZSAnYjJ0LWNvcHkn
OgorICAgICAgICAgICAgY2FzZSAndDJiLWNvcHknOgorICAgICAgICAgICAgY2FzZSAnYjJiLWNv
cHknOgorICAgICAgICAgICAgY2FzZSAnd3JpdGUtYnVmZmVyJzoKKyAgICAgICAgICAgICAgLy8g
VGhlc2UgZG9uJ3Qgb2NjdXIgaW4gYSByZW5kZXIgcGFzcy4KKyAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgfQorCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2lu
cHV0LXZlcnRleCc6CisgICAgICAgIGNhc2UgJ2lucHV0LWluZGV4JzoKKyAgICAgICAgY2FzZSAn
aW5wdXQtaW5kaXJlY3QnOgorICAgICAgICBjYXNlICdpbnB1dC1pbmRpcmVjdC1pbmRleCc6Cisg
ICAgICAgIGNhc2UgJ2NvbnN0YW50LXVuaWZvcm0nOgorICAgICAgICBjYXNlICdiMnQtY29weSc6
CisgICAgICAgIGNhc2UgJ3QyYi1jb3B5JzoKKyAgICAgICAgY2FzZSAnYjJiLWNvcHknOgorICAg
ICAgICBjYXNlICd3cml0ZS1idWZmZXInOgorICAgICAgICAgIC8vIFRoZXNlIGFyZSBub3Qgd3Jp
dGUgdXNhZ2VzLCBvciBkb24ndCBvY2N1ciBpbiBhIHJlbmRlciBwYXNzLgorICAgICAgICAgIGJy
ZWFrOworICAgICAgfQogCi1leHBvcnQgY29uc3Qga0FsbFdyaXRlT3BzID0gWydyZW5kZXInLCAn
cmVuZGVyLXZpYS1idW5kbGUnLCAnY29tcHV0ZScsICdiMmItY29weScsICd0MmItY29weSddOwor
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKyAgICByZXR1cm4gY2hlY2tJbXBsKG9wc1swXSwg
b3BzWzFdKSAmJiBjaGVja0ltcGwob3BzWzFdLCBvcHNbMF0pOworICB9CisgIHJldHVybiB0cnVl
OworfQorCitjb25zdCBrRHVtbXlWZXJ0ZXhTaGFkZXIgPSBgCitAc3RhZ2UodmVydGV4KSBmbiB2
ZXJ0X21haW4oKSAtPiBAYnVpbHRpbihwb3NpdGlvbikgdmVjNDxmMzI+IHsKKyAgcmV0dXJuIHZl
YzQ8ZjMyPigwLjUsIDAuNSwgMC4wLCAxLjApOworfQorYDsKIAogLy8gTm90ZTogSWYgaXQgd291
bGQgYmUgdXNlZnVsIHRvIGhhdmUgYW55IG9mIHRoZXNlIGhlbHBlcnMgYmUgc2VwYXJhdGUgZnJv
bSB0aGUgZml4dHVyZSwKIC8vIHRoZXkgY2FuIGJlIHJlZmFjdG9yZWQgaW50byBzdGFuZGFsb25l
IGZ1bmN0aW9ucy4KIGV4cG9ydCBjbGFzcyBCdWZmZXJTeW5jVGVzdCBleHRlbmRzIEdQVVRlc3Qg
ewotICAvLyBDcmVhdGUgYSBidWZmZXIsIGFuZCBpbml0aWFsaXplIGl0IHRvIGEgc3BlY2lmaWVk
IHZhbHVlIGZvciBhbGwgZWxlbWVudHMuCisgIC8vIFZlcnRleCBhbmQgaW5kZXggYnVmZmVycyB1
c2VkIGluIHJlYWQgcmVuZGVyIHBhc3MKKworICAvLyBUZW1wIGJ1ZmZlciBhbmQgdGV4dHVyZSB3
aXRoIHZhbHVlcyBmb3IgYnVmZmVyL3RleHR1cmUgY29weSB3cml0ZSBvcAorICAvLyBUaGVyZSBj
YW4gYmUgYXQgbW9zdCAyIHdyaXRlIG9wCisgIHRtcFZhbHVlQnVmZmVycyA9IFt1bmRlZmluZWQs
IHVuZGVmaW5lZF07CisgIHRtcFZhbHVlVGV4dHVyZXMgPSBbdW5kZWZpbmVkLCB1bmRlZmluZWRd
OworCisgIC8vIFRoZXNlIGludGVybWVkaWF0ZSBidWZmZXJzL3RleHR1cmVzIGFyZSBjcmVhdGVk
IGJlZm9yZSBhbnkgcmVhZC93cml0ZSBvcAorICAvLyB0byBhdm9pZCBleHRyYSBtZW1vcnkgc3lu
Y2hyb25pemF0aW9uIGJldHdlZW4gb3BzIGludHJvZHVjZWQgYnkgYXdhaXQgb24gYnVmZmVyL3Rl
eHR1cmUgY3JlYXRpb25zLgorICAvLyBDcmVhdGUgZXh0cmEgYnVmZmVycy90ZXh0dXJlcyBuZWVk
ZWQgYnkgd3JpdGUgb3BlcmF0aW9uCisgIGFzeW5jIGNyZWF0ZUludGVybWVkaWF0ZUJ1ZmZlcnNB
bmRUZXh0dXJlc0ZvcldyaXRlT3Aod3JpdGVPcCwgc2xvdCwgdmFsdWUpIHsKKyAgICBzd2l0Y2gg
KHdyaXRlT3ApIHsKKyAgICAgIGNhc2UgJ2IyYi1jb3B5JzoKKyAgICAgICAgdGhpcy50bXBWYWx1
ZUJ1ZmZlcnNbc2xvdF0gPSBhd2FpdCB0aGlzLmNyZWF0ZUJ1ZmZlcldpdGhWYWx1ZSh2YWx1ZSk7
CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndDJiLWNvcHknOgorICAgICAgICB0aGlzLnRt
cFZhbHVlVGV4dHVyZXNbc2xvdF0gPSBhd2FpdCB0aGlzLmNyZWF0ZVRleHR1cmVXaXRoVmFsdWUo
dmFsdWUpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgfQorCisgIC8vIENyZWF0ZSBleHRyYSBidWZmZXJzL3RleHR1cmVzIG5lZWRlZCBi
eSByZWFkIG9wZXJhdGlvbgorICBhc3luYyBjcmVhdGVCdWZmZXJzRm9yUmVhZE9wKHJlYWRPcCwg
c3JjVmFsdWUsIG9wVmFsdWUpIHsKKyAgICAvLyBUaGlzIGhlbHBzIGNyZWF0ZSB2YWx1ZXMgdGhh
dCB3aWxsIGJlIHdyaXR0ZW4gaW50byBkc3QgYnVmZmVyIGJ5IHRoZSByZWFkb3AKKyAgICBzd2l0
Y2ggKHJlYWRPcCkgeworICAgICAgY2FzZSAnaW5wdXQtaW5kZXgnOgorICAgICAgICAvLyBUaGUg
aW5kZXggYnVmZmVyIHdpbGwgYmUgdGhlIHNyYyBidWZmZXIgb2YgdGhlIHJlYWQgb3AuCisgICAg
ICAgIC8vIFRoZSBzcmMgdmFsdWUgZm9yIHJlYWRPcCB3aWxsIGJlIDAKKyAgICAgICAgLy8gSWYg
dGhlIGluZGV4IGJ1ZmZlciB2YWx1ZSBpcyAwLCB0aGUgc3JjIHZhbHVlIGlzIHdyaXR0ZW4gaW50
byB0aGUgZHN0IGJ1ZmZlci4KKyAgICAgICAgLy8gSWYgdGhlIGluZGV4IGJ1ZmZlciB2YWx1ZSBp
cyAxLCB0aGUgb3AgdmFsdWUgaXMgd3JpdHRlbiBpbnRvIHRoZSBkc3QgYnVmZmVyLgorICAgICAg
ICB0aGlzLnZlcnRleEJ1ZmZlciA9IGF3YWl0IHRoaXMuY3JlYXRlQnVmZmVyV2l0aFZhbHVlcyhb
c3JjVmFsdWUsIG9wVmFsdWVdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdpbnB1dC1p
bmRpcmVjdCc6CisgICAgICAgIC8vIFRoZSBpbmRpcmVjdCBidWZmZXIgZm9yIHRoZSBkcmF3IGNt
ZCB3aWxsIGJlIHRoZSBzcmMgYnVmZmVyIG9mIHRoZSByZWFkIG9wLgorICAgICAgICAvLyBJZiB0
aGUgZmlyc3QgdmFsdWUgaW4gdGhlIGluZGlyZWN0IGJ1ZmZlciBpcyAxLCB0aGVuIHRoZSBvcCB2
YWx1ZSBpbiB2ZXJ0ZXggYnVmZmVyIHdpbGwgYmUgd3JpdHRlbiBpbnRvIGRzdCBidWZmZXIuCisg
ICAgICAgIC8vIElmIHRoZSBmaXJzdCB2YWx1ZSBpbiBpbmRpcmVjdCBidWZmZXIgaXMgMCwgdGhl
biBub3RoaW5nIHdpbGwgYmUgd3JpdGUgaW50byBkc3QgYnVmZmVyLgorICAgICAgICB0aGlzLnZl
cnRleEJ1ZmZlciA9IGF3YWl0IHRoaXMuY3JlYXRlQnVmZmVyV2l0aFZhbHVlcyhbb3BWYWx1ZV0p
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ2lucHV0LWluZGlyZWN0LWluZGV4JzoKKyAg
ICAgICAgLy8gVGhlIGluZGlyZWN0IGJ1ZmZlciBmb3IgZHJhdyBpbmRleGVkIGNtZCB3aWxsIGJl
IHRoZSBzcmMgYnVmZmVyIG9mIHRoZSByZWFkIG9wLgorICAgICAgICAvLyBJZiB0aGUgZmlyc3Qg
dmFsdWUgaW4gdGhlIGluZGlyZWN0IGJ1ZmZlciBpcyAxLCB0aGVuIHRoZSBvcFZhbHVlIGluIHZl
cnRleCBidWZmZXIgd2lsbCBiZSB3cml0dGVuIGludG8gZHN0IGJ1ZmZlci4KKyAgICAgICAgLy8g
SWYgdGhlIGZpcnN0IHZhbHVlIGluIGluZGlyZWN0IGJ1ZmZlciBpcyAwLCB0aGVuIG5vdGhpbmcg
d2lsbCBiZSB3cml0ZSBpbnRvIGRzdCBidWZmZXIuCisgICAgICAgIHRoaXMudmVydGV4QnVmZmVy
ID0gYXdhaXQgdGhpcy5jcmVhdGVCdWZmZXJXaXRoVmFsdWVzKFtvcFZhbHVlXSk7CisgICAgICAg
IHRoaXMuaW5kZXhCdWZmZXIgPSBhd2FpdCB0aGlzLmNyZWF0ZUJ1ZmZlcldpdGhWYWx1ZXMoWzBd
KTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9
CisKKyAgICBsZXQgc3JjQnVmZmVyOworICAgIHN3aXRjaCAocmVhZE9wKSB7CisgICAgICBjYXNl
ICdpbnB1dC1pbmRpcmVjdCc6CisgICAgICAgIC8vIHZlcnRleENvdW50ID0gezAsIDF9CisgICAg
ICAgIC8vIGluc3RhbmNlQ291bnQgPSAxCisgICAgICAgIC8vIGZpcnN0VmVydGV4ID0gMAorICAg
ICAgICAvLyBmaXJzdEluc3RhbmNlID0gMAorICAgICAgICBzcmNCdWZmZXIgPSBhd2FpdCB0aGlz
LmNyZWF0ZUJ1ZmZlcldpdGhWYWx1ZXMoW3NyY1ZhbHVlLCAxLCAwLCAwXSk7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSAnaW5wdXQtaW5kaXJlY3QtaW5kZXgnOgorICAgICAgICAvLyBpbmRl
eENvdW50ID0gezAsIDF9CisgICAgICAgIC8vIGluc3RhbmNlQ291bnQgPSAxCisgICAgICAgIC8v
IGZpcnN0SW5kZXggPSAwCisgICAgICAgIC8vIGJhc2VWZXJ0ZXggPSAwCisgICAgICAgIC8vIGZp
cnN0SW5zdGFuY2UgPSAwCisgICAgICAgIHNyY0J1ZmZlciA9IGF3YWl0IHRoaXMuY3JlYXRlQnVm
ZmVyV2l0aFZhbHVlcyhbc3JjVmFsdWUsIDEsIDAsIDAsIDBdKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlICdpbnB1dC1pbmRpcmVjdC1kaXNwYXRjaCc6CisgICAgICAgIC8vIHdvcmtncm91
cENvdW50WCA9IHswLCAxfQorICAgICAgICAvLyB3b3JrZ3JvdXBDb3VudFkgPSAxCisgICAgICAg
IC8vIHdvcmtncm91cENvdW50WiA9IDEKKyAgICAgICAgc3JjQnVmZmVyID0gYXdhaXQgdGhpcy5j
cmVhdGVCdWZmZXJXaXRoVmFsdWVzKFtzcmNWYWx1ZSwgMSwgMV0pOworICAgICAgICBicmVhazsK
KyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHNyY0J1ZmZlciA9IGF3YWl0IHRoaXMuY3JlYXRlQnVm
ZmVyV2l0aFZhbHVlKHNyY1ZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY29u
c3QgZHN0QnVmZmVyID0gdGhpcy50cmFja0ZvckNsZWFudXAoCisgICAgICBhd2FpdCB0aGlzLmRl
dmljZS5jcmVhdGVCdWZmZXIoeworICAgICAgICBzaXplOiBVaW50MzJBcnJheS5CWVRFU19QRVJf
RUxFTUVOVCwKKyAgICAgICAgdXNhZ2U6CisgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9T
UkMgfAorICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwKKyAgICAgICAgICBHUFVC
dWZmZXJVc2FnZS5TVE9SQUdFIHwKKyAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5WRVJURVggfAor
ICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKKyAgICAgICAgICBHUFVCdWZmZXJVc2Fn
ZS5JTkRJUkVDVCB8CisgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVU5JRk9STSwKKyAgICAgIH0p
CisgICAgKTsKKworICAgIHJldHVybiB7IHNyY0J1ZmZlciwgZHN0QnVmZmVyIH07CisgIH0KKwor
ICAvLyBDcmVhdGUgYSBidWZmZXIgd2l0aCAxIHVpbnQzMiBlbGVtZW50LCBhbmQgaW5pdGlhbGl6
ZSBpdCB0byBhIHNwZWNpZmllZCB2YWx1ZS4KICAgYXN5bmMgY3JlYXRlQnVmZmVyV2l0aFZhbHVl
KGluaXRWYWx1ZSkgewotICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih7Ci0gICAgICBtYXBwZWRBdENyZWF0aW9uOiB0cnVlLAotICAgICAgc2l6ZToga1NpemUsCi0g
ICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5DT1BZ
X0RTVCB8IEdQVUJ1ZmZlclVzYWdlLlNUT1JBR0UsCi0gICAgfSk7CisgICAgY29uc3QgYnVmZmVy
ID0gdGhpcy50cmFja0ZvckNsZWFudXAoCisgICAgICB0aGlzLmRldmljZS5jcmVhdGVCdWZmZXIo
eworICAgICAgICBtYXBwZWRBdENyZWF0aW9uOiB0cnVlLAorICAgICAgICBzaXplOiBVaW50MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVCwKKyAgICAgICAgdXNhZ2U6CisgICAgICAgICAgR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkMgfAorICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwK
KyAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFIHwKKyAgICAgICAgICBHUFVCdWZmZXJV
c2FnZS5WRVJURVggfAorICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklOREVYIHwKKyAgICAgICAg
ICBHUFVCdWZmZXJVc2FnZS5JTkRJUkVDVCB8CisgICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuVU5J
Rk9STSwKKyAgICAgIH0pCisgICAgKTsKIAogICAgIG5ldyBVaW50MzJBcnJheShidWZmZXIuZ2V0
TWFwcGVkUmFuZ2UoKSkuZmlsbChpbml0VmFsdWUpOwogICAgIGJ1ZmZlci51bm1hcCgpOwpAQCAt
MjUsMjAgKzI1NSw0NiBAQCBleHBvcnQgY2xhc3MgQnVmZmVyU3luY1Rlc3QgZXh0ZW5kcyBHUFVU
ZXN0IHsKICAgICByZXR1cm4gYnVmZmVyOwogICB9CiAKLSAgLy8gQ3JlYXRlIGEgdGV4dHVyZSwg
YW5kIGluaXRpYWxpemUgaXQgdG8gYSBzcGVjaWZpZWQgdmFsdWUgZm9yIGFsbCBlbGVtZW50cy4K
KyAgLy8gQ3JlYXRlIGEgYnVmZmVyLCBhbmQgaW5pdGlhbGl6ZSBpdCB0byB0aGUgc3BlY2lmaWVk
IHZhbHVlcy4KKyAgYXN5bmMgY3JlYXRlQnVmZmVyV2l0aFZhbHVlcyhpbml0VmFsdWVzKSB7Cisg
ICAgY29uc3QgYnVmZmVyID0gdGhpcy50cmFja0ZvckNsZWFudXAoCisgICAgICB0aGlzLmRldmlj
ZS5jcmVhdGVCdWZmZXIoeworICAgICAgICBtYXBwZWRBdENyZWF0aW9uOiB0cnVlLAorICAgICAg
ICBzaXplOiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAqIGluaXRWYWx1ZXMubGVuZ3Ro
LAorICAgICAgICB1c2FnZToKKyAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8Cisg
ICAgICAgICAgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QgfAorICAgICAgICAgIEdQVUJ1ZmZlclVz
YWdlLlNUT1JBR0UgfAorICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLlZFUlRFWCB8CisgICAgICAg
ICAgR1BVQnVmZmVyVXNhZ2UuSU5ERVggfAorICAgICAgICAgIEdQVUJ1ZmZlclVzYWdlLklORElS
RUNUIHwKKyAgICAgICAgICBHUFVCdWZmZXJVc2FnZS5VTklGT1JNLAorICAgICAgfSkKKyAgICAp
OworCisgICAgY29uc3QgYnVmZmVyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIuZ2V0TWFw
cGVkUmFuZ2UoKSk7CisgICAgYnVmZmVyVmlldy5zZXQoaW5pdFZhbHVlcyk7CisgICAgYnVmZmVy
LnVubWFwKCk7CisgICAgYXdhaXQgdGhpcy5xdWV1ZS5vblN1Ym1pdHRlZFdvcmtEb25lKCk7Cisg
ICAgcmV0dXJuIGJ1ZmZlcjsKKyAgfQorCisgIC8vIENyZWF0ZSBhIDF4MSB0ZXh0dXJlLCBhbmQg
aW5pdGlhbGl6ZSBpdCB0byBhIHNwZWNpZmllZCB2YWx1ZSBmb3IgYWxsIGVsZW1lbnRzLgogICBh
c3luYyBjcmVhdGVUZXh0dXJlV2l0aFZhbHVlKGluaXRWYWx1ZSkgewotICAgIGNvbnN0IGRhdGEg
PSBuZXcgVWludDMyQXJyYXkoa1NpemUgLyA0KS5maWxsKGluaXRWYWx1ZSk7Ci0gICAgY29uc3Qg
dGV4dHVyZSA9IHRoaXMuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewotICAgICAgc2l6ZTogeyB3aWR0
aDoga1NpemUgLyA0LCBoZWlnaHQ6IDEsIGRlcHRoT3JBcnJheUxheWVyczogMSB9LAotICAgICAg
Zm9ybWF0OiAncjMydWludCcsCi0gICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JD
IHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNULAotICAgIH0pOworICAgIGNvbnN0IGRhdGEgPSBu
ZXcgVWludDMyQXJyYXkoMSkuZmlsbChpbml0VmFsdWUpOworICAgIGNvbnN0IHRleHR1cmUgPSB0
aGlzLnRyYWNrRm9yQ2xlYW51cCgKKyAgICAgIHRoaXMuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewor
ICAgICAgICBzaXplOiB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRoT3JBcnJheUxheWVyczog
MSB9LAorICAgICAgICBmb3JtYXQ6ICdyMzJ1aW50JywKKyAgICAgICAgdXNhZ2U6IEdQVVRleHR1
cmVVc2FnZS5DT1BZX1NSQyB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVCwKKyAgICAgIH0pCisg
ICAgKTsKIAogICAgIHRoaXMuZGV2aWNlLnF1ZXVlLndyaXRlVGV4dHVyZSgKICAgICAgIHsgdGV4
dHVyZSwgbWlwTGV2ZWw6IDAsIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0gfSwKICAgICAg
IGRhdGEsCi0gICAgICB7IG9mZnNldDogMCwgYnl0ZXNQZXJSb3c6IGtTaXplLCByb3dzUGVySW1h
Z2U6IDEgfSwKLSAgICAgIHsgd2lkdGg6IGtTaXplIC8gNCwgaGVpZ2h0OiAxLCBkZXB0aE9yQXJy
YXlMYXllcnM6IDEgfQorICAgICAgeyBvZmZzZXQ6IDAsIGJ5dGVzUGVyUm93OiAyNTYsIHJvd3NQ
ZXJJbWFnZTogMSB9LAorICAgICAgeyB3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aE9yQXJyYXlM
YXllcnM6IDEgfQogICAgICk7CiAKICAgICBhd2FpdCB0aGlzLnF1ZXVlLm9uU3VibWl0dGVkV29y
a0RvbmUoKTsKQEAgLTU2LDEzICszMTIsMTIgQEAgZXhwb3J0IGNsYXNzIEJ1ZmZlclN5bmNUZXN0
IGV4dGVuZHMgR1BVVGVzdCB7CiAgIGNyZWF0ZVN0b3JhZ2VXcml0ZUNvbXB1dGVQaXBlbGluZSh2
YWx1ZSkgewogICAgIGNvbnN0IHdnc2xDb21wdXRlID0gYAogICAgICAgc3RydWN0IERhdGEgewot
ICAgICAgICBhIDogaTMyOworICAgICAgICBhIDogdTMyCiAgICAgICB9OwogCiAgICAgICBAZ3Jv
dXAoMCkgQGJpbmRpbmcoMCkgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IGRhdGEgOiBEYXRhOwog
ICAgICAgQHN0YWdlKGNvbXB1dGUpIEB3b3JrZ3JvdXBfc2l6ZSgxKSBmbiBtYWluKCkgewotICAg
ICAgICBkYXRhLmEgPSAke3ZhbHVlfTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBkYXRhLmEg
PSAke3ZhbHVlfXU7CiAgICAgICB9CiAgICAgYDsKIApAQCAtNzcsMjggKzMzMiw3IEBAIGV4cG9y
dCBjbGFzcyBCdWZmZXJTeW5jVGVzdCBleHRlbmRzIEdQVVRlc3QgewogICAgIH0pOwogICB9CiAK
LSAgLy8gQ3JlYXRlIGEgcmVuZGVyIHBpcGVsaW5lIGFuZCB3cml0ZSBnaXZlbiBkYXRhIGludG8g
c3RvcmFnZSBidWZmZXIgYXQgZnJhZ21lbnQgc3RhZ2UuCi0gIGNyZWF0ZVN0b3JhZ2VXcml0ZVJl
bmRlclBpcGVsaW5lKHZhbHVlKSB7Ci0gICAgY29uc3Qgd2dzbFNoYWRlcnMgPSB7Ci0gICAgICB2
ZXJ0ZXg6IGAKLSAgICAgIEBzdGFnZSh2ZXJ0ZXgpIGZuIHZlcnRfbWFpbigpIC0+IEBidWlsdGlu
KHBvc2l0aW9uKSB2ZWM0PGYzMj4gewotICAgICAgICByZXR1cm4gdmVjNDxmMzI+KDAuNSwgMC41
LCAwLjAsIDEuMCk7Ci0gICAgICB9Ci0gICAgYCwKLQotICAgICAgZnJhZ21lbnQ6IGAKLSAgICAg
IHN0cnVjdCBEYXRhIHsKLSAgICAgICAgYSA6IGkzMjsKLSAgICAgIH07Ci0KLSAgICAgIEBncm91
cCgwKSBAYmluZGluZygwKSB2YXI8c3RvcmFnZSwgcmVhZF93cml0ZT4gZGF0YSA6IERhdGE7Ci0g
ICAgICBAc3RhZ2UoZnJhZ21lbnQpIGZuIGZyYWdfbWFpbigpIC0+IEBsb2NhdGlvbigwKSB2ZWM0
PGYzMj4gewotICAgICAgICBkYXRhLmEgPSAke3ZhbHVlfTsKLSAgICAgICAgcmV0dXJuIHZlYzQ8
ZjMyPigxLjAsIDAuMCwgMC4wLCAxLjApOwotICAgICAgfQotICAgIGAsCi0gICAgfTsKLQorICBj
cmVhdGVUcml2aWFsUmVuZGVyUGlwZWxpbmUod2dzbFNoYWRlcnMpIHsKICAgICByZXR1cm4gdGhp
cy5kZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoewogICAgICAgdmVydGV4OiB7CiAgICAgICAg
IG1vZHVsZTogdGhpcy5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKQEAgLTEyMSwxNCArMzU1
LDM0IEBAIGV4cG9ydCBjbGFzcyBCdWZmZXJTeW5jVGVzdCBleHRlbmRzIEdQVVRlc3QgewogICAg
IH0pOwogICB9CiAKKyAgLy8gQ3JlYXRlIGEgcmVuZGVyIHBpcGVsaW5lIGFuZCB3cml0ZSBnaXZl
biBkYXRhIGludG8gc3RvcmFnZSBidWZmZXIgYXQgZnJhZ21lbnQgc3RhZ2UuCisgIGNyZWF0ZVN0
b3JhZ2VXcml0ZVJlbmRlclBpcGVsaW5lKHZhbHVlKSB7CisgICAgY29uc3Qgd2dzbFNoYWRlcnMg
PSB7CisgICAgICB2ZXJ0ZXg6IGtEdW1teVZlcnRleFNoYWRlciwKKyAgICAgIGZyYWdtZW50OiBg
CisgICAgICBzdHJ1Y3QgRGF0YSB7CisgICAgICAgIGEgOiB1MzIKKyAgICAgIH07CisKKyAgICAg
IEBncm91cCgwKSBAYmluZGluZygwKSB2YXI8c3RvcmFnZSwgcmVhZF93cml0ZT4gZGF0YSA6IERh
dGE7CisgICAgICBAc3RhZ2UoZnJhZ21lbnQpIGZuIGZyYWdfbWFpbigpIC0+IEBsb2NhdGlvbigw
KSB2ZWM0PGYzMj4geworICAgICAgICBkYXRhLmEgPSAke3ZhbHVlfXU7CisgICAgICAgIHJldHVy
biB2ZWM0PGYzMj4oKTsgIC8vIHJlc3VsdCBkb2VzJ3QgbWF0dGVyCisgICAgICB9CisgICAgYCwK
KyAgICB9OworCisgICAgcmV0dXJuIHRoaXMuY3JlYXRlVHJpdmlhbFJlbmRlclBpcGVsaW5lKHdn
c2xTaGFkZXJzKTsKKyAgfQorCiAgIGJlZ2luU2ltcGxlUmVuZGVyUGFzcyhlbmNvZGVyKSB7Ci0g
ICAgY29uc3QgdmlldyA9IHRoaXMuZGV2aWNlCi0gICAgICAuY3JlYXRlVGV4dHVyZSh7CisgICAg
Y29uc3QgdmlldyA9IHRoaXMudHJhY2tGb3JDbGVhbnVwKAorICAgICAgdGhpcy5kZXZpY2UuY3Jl
YXRlVGV4dHVyZSh7CiAgICAgICAgIHNpemU6IHsgd2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGhP
ckFycmF5TGF5ZXJzOiAxIH0sCiAgICAgICAgIGZvcm1hdDogJ3JnYmE4dW5vcm0nLAogICAgICAg
ICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlJFTkRFUl9BVFRBQ0hNRU5ULAogICAgICAgfSkKLSAg
ICAgIC5jcmVhdGVWaWV3KCk7CisgICAgKS5jcmVhdGVWaWV3KCk7CiAgICAgcmV0dXJuIGVuY29k
ZXIuYmVnaW5SZW5kZXJQYXNzKHsKICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFsKICAgICAgICAg
ewpAQCAtMTQyLDQ1ICszOTYsMzYgQEAgZXhwb3J0IGNsYXNzIEJ1ZmZlclN5bmNUZXN0IGV4dGVu
ZHMgR1BVVGVzdCB7CiAgIH0KIAogICAvLyBXcml0ZSBidWZmZXIgdmlhIGRyYXcgY2FsbCBpbiBy
ZW5kZXIgcGFzcy4gVXNlIGJ1bmRsZSBpZiBuZWVkZWQuCi0gIGVuY29kZVdyaXRlQXNTdG9yYWdl
QnVmZmVySW5SZW5kZXJQYXNzKGVuY29kZXIsIGJ1ZmZlciwgdmFsdWUsIGluQnVuZGxlKSB7Cisg
IGVuY29kZVdyaXRlQXNTdG9yYWdlQnVmZmVySW5SZW5kZXJQYXNzKHJlbmRlcmVyLCBidWZmZXIs
IHZhbHVlKSB7CiAgICAgY29uc3QgcGlwZWxpbmUgPSB0aGlzLmNyZWF0ZVN0b3JhZ2VXcml0ZVJl
bmRlclBpcGVsaW5lKHZhbHVlKTsKICAgICBjb25zdCBiaW5kR3JvdXAgPSB0aGlzLmNyZWF0ZUJp
bmRHcm91cChwaXBlbGluZSwgYnVmZmVyKTsKIAotICAgIGNvbnN0IHBhc3MgPSB0aGlzLmJlZ2lu
U2ltcGxlUmVuZGVyUGFzcyhlbmNvZGVyKTsKLSAgICBjb25zdCByZW5kZXJlciA9IGluQnVuZGxl
Ci0gICAgICA/IHRoaXMuZGV2aWNlLmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoeyBjb2xvckZv
cm1hdHM6IFsncmdiYTh1bm9ybSddIH0pCi0gICAgICA6IHBhc3M7CiAgICAgcmVuZGVyZXIuc2V0
QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7CiAgICAgcmVuZGVyZXIuc2V0UGlwZWxpbmUocGlwZWxp
bmUpOwogICAgIHJlbmRlcmVyLmRyYXcoMSwgMSwgMCwgMCk7Ci0KLSAgICBpZiAoaW5CdW5kbGUp
IHBhc3MuZXhlY3V0ZUJ1bmRsZXMoW3JlbmRlcmVyLmZpbmlzaCgpXSk7Ci0gICAgcGFzcy5lbmQo
KTsKICAgfQogCiAgIC8vIFdyaXRlIGJ1ZmZlciB2aWEgZGlzcGF0Y2ggY2FsbCBpbiBjb21wdXRl
IHBhc3MuCi0gIGVuY29kZVdyaXRlQXNTdG9yYWdlQnVmZmVySW5Db21wdXRlUGFzcyhlbmNvZGVy
LCBidWZmZXIsIHZhbHVlKSB7CisgIGVuY29kZVdyaXRlQXNTdG9yYWdlQnVmZmVySW5Db21wdXRl
UGFzcyhwYXNzLCBidWZmZXIsIHZhbHVlKSB7CiAgICAgY29uc3QgcGlwZWxpbmUgPSB0aGlzLmNy
ZWF0ZVN0b3JhZ2VXcml0ZUNvbXB1dGVQaXBlbGluZSh2YWx1ZSk7CiAgICAgY29uc3QgYmluZEdy
b3VwID0gdGhpcy5jcmVhdGVCaW5kR3JvdXAocGlwZWxpbmUsIGJ1ZmZlcik7Ci0gICAgY29uc3Qg
cGFzcyA9IGVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOwogICAgIHBhc3Muc2V0UGlwZWxpbmUo
cGlwZWxpbmUpOwogICAgIHBhc3Muc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7CiAgICAgcGFz
cy5kaXNwYXRjaCgxKTsKLSAgICBwYXNzLmVuZCgpOwogICB9CiAKLSAgLyoqIFdyaXRlIGJ1ZmZl
ciB2aWEgQnVmZmVyVG9CdWZmZXIgY29weS4gKi8KLSAgYXN5bmMgZW5jb2RlV3JpdGVCeUIyQkNv
cHkoZW5jb2RlciwgYnVmZmVyLCB2YWx1ZSkgewotICAgIGNvbnN0IHRtcEJ1ZmZlciA9IGF3YWl0
IHRoaXMuY3JlYXRlQnVmZmVyV2l0aFZhbHVlKHZhbHVlKTsKLQorICAvLyBXcml0ZSBidWZmZXIg
dmlhIEJ1ZmZlclRvQnVmZmVyIGNvcHkuCisgIGVuY29kZVdyaXRlQnlCMkJDb3B5KGVuY29kZXIs
IGJ1ZmZlciwgc2xvdCkgeworICAgIGNvbnN0IHRtcEJ1ZmZlciA9IHRoaXMudG1wVmFsdWVCdWZm
ZXJzW3Nsb3RdOworICAgIGFzc2VydCh0bXBCdWZmZXIgIT09IHVuZGVmaW5lZCk7CiAgICAgLy8g
VGhlIHdyaXRlIG9wZXJhdGlvbiB2aWEgYjJiIGNvcHkgaXMganVzdCBlbmNvZGVkIGludG8gY29t
bWFuZCBlbmNvZGVyLCBpdCBkb2Vzbid0IHdyaXRlIGltbWVkaWF0ZWx5LgotICAgIGVuY29kZXIu
Y29weUJ1ZmZlclRvQnVmZmVyKHRtcEJ1ZmZlciwgMCwgYnVmZmVyLCAwLCBrU2l6ZSk7CisgICAg
ZW5jb2Rlci5jb3B5QnVmZmVyVG9CdWZmZXIodG1wQnVmZmVyLCAwLCBidWZmZXIsIDAsIFVpbnQz
MkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UKTsKICAgfQogCiAgIC8vIFdyaXRlIGJ1ZmZlciB2aWEg
VGV4dHVyZVRvQnVmZmVyIGNvcHkuCi0gIGFzeW5jIGVuY29kZVdyaXRlQnlUMkJDb3B5KGVuY29k
ZXIsIGJ1ZmZlciwgdmFsdWUpIHsKLSAgICBjb25zdCB0bXBUZXh0dXJlID0gYXdhaXQgdGhpcy5j
cmVhdGVUZXh0dXJlV2l0aFZhbHVlKHZhbHVlKTsKLQorICBlbmNvZGVXcml0ZUJ5VDJCQ29weShl
bmNvZGVyLCBidWZmZXIsIHNsb3QpIHsKKyAgICBjb25zdCB0bXBUZXh0dXJlID0gdGhpcy50bXBW
YWx1ZVRleHR1cmVzW3Nsb3RdOworICAgIGFzc2VydCh0bXBUZXh0dXJlICE9PSB1bmRlZmluZWQp
OwogICAgIC8vIFRoZSB3cml0ZSBvcGVyYXRpb24gdmlhIHQyYiBjb3B5IGlzIGp1c3QgZW5jb2Rl
ZCBpbnRvIGNvbW1hbmQgZW5jb2RlciwgaXQgZG9lc24ndCB3cml0ZSBpbW1lZGlhdGVseS4KICAg
ICBlbmNvZGVyLmNvcHlUZXh0dXJlVG9CdWZmZXIoCiAgICAgICB7IHRleHR1cmU6IHRtcFRleHR1
cmUsIG1pcExldmVsOiAwLCBvcmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9IH0sCkBAIC0xOTEs
NDYgKzQzNiw0MzggQEAgZXhwb3J0IGNsYXNzIEJ1ZmZlclN5bmNUZXN0IGV4dGVuZHMgR1BVVGVz
dCB7CiAKICAgLy8gV3JpdGUgYnVmZmVyIHZpYSB3cml0ZUJ1ZmZlciBBUEkgb24gcXVldWUKICAg
d3JpdGVCeVdyaXRlQnVmZmVyKGJ1ZmZlciwgdmFsdWUpIHsKLSAgICBjb25zdCBkYXRhID0gbmV3
IFVpbnQzMkFycmF5KGtTaXplIC8gNCkuZmlsbCh2YWx1ZSk7CisgICAgY29uc3QgZGF0YSA9IG5l
dyBVaW50MzJBcnJheSgxKS5maWxsKHZhbHVlKTsKICAgICB0aGlzLmRldmljZS5xdWV1ZS53cml0
ZUJ1ZmZlcihidWZmZXIsIDAsIGRhdGEpOwogICB9CiAKICAgLy8gSXNzdWUgd3JpdGUgb3BlcmF0
aW9uIHZpYSByZW5kZXIgcGFzcywgY29tcHV0ZSBwYXNzLCBjb3B5LCBldGMuCi0gIGFzeW5jIGVu
Y29kZVdyaXRlT3AoZW5jb2Rlciwgd3JpdGVPcCwgYnVmZmVyLCB2YWx1ZSkgewotICAgIHN3aXRj
aCAod3JpdGVPcCkgewotICAgICAgY2FzZSAncmVuZGVyJzoKLSAgICAgICAgdGhpcy5lbmNvZGVX
cml0ZUFzU3RvcmFnZUJ1ZmZlckluUmVuZGVyUGFzcyhlbmNvZGVyLCBidWZmZXIsIHZhbHVlLCBm
YWxzZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAncmVuZGVyLXZpYS1idW5kbGUnOgot
ICAgICAgICB0aGlzLmVuY29kZVdyaXRlQXNTdG9yYWdlQnVmZmVySW5SZW5kZXJQYXNzKGVuY29k
ZXIsIGJ1ZmZlciwgdmFsdWUsIHRydWUpOworICBlbmNvZGVXcml0ZU9wKGhlbHBlciwgb3BlcmF0
aW9uLCBjb250ZXh0LCBidWZmZXIsIHdyaXRlT3BTbG90LCB2YWx1ZSkgeworICAgIGhlbHBlci5l
bnN1cmVDb250ZXh0KGNvbnRleHQpOworCisgICAgc3dpdGNoIChvcGVyYXRpb24pIHsKKyAgICAg
IGNhc2UgJ3dyaXRlLWJ1ZmZlcic6CisgICAgICAgIHRoaXMud3JpdGVCeVdyaXRlQnVmZmVyKGJ1
ZmZlciwgdmFsdWUpOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ2NvbXB1dGUnOgotICAg
ICAgICB0aGlzLmVuY29kZVdyaXRlQXNTdG9yYWdlQnVmZmVySW5Db21wdXRlUGFzcyhlbmNvZGVy
LCBidWZmZXIsIHZhbHVlKTsKKyAgICAgIGNhc2UgJ3N0b3JhZ2UnOgorICAgICAgICBzd2l0Y2gg
KGNvbnRleHQpIHsKKyAgICAgICAgICBjYXNlICdyZW5kZXItcGFzcy1lbmNvZGVyJzoKKyAgICAg
ICAgICAgIGFzc2VydChoZWxwZXIucmVuZGVyUGFzc0VuY29kZXIgIT09IHVuZGVmaW5lZCk7Cisg
ICAgICAgICAgICB0aGlzLmVuY29kZVdyaXRlQXNTdG9yYWdlQnVmZmVySW5SZW5kZXJQYXNzKGhl
bHBlci5yZW5kZXJQYXNzRW5jb2RlciwgYnVmZmVyLCB2YWx1ZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICBjYXNlICdyZW5kZXItYnVuZGxlLWVuY29kZXInOgorICAgICAgICAgICAg
YXNzZXJ0KGhlbHBlci5yZW5kZXJCdW5kbGVFbmNvZGVyICE9PSB1bmRlZmluZWQpOworICAgICAg
ICAgICAgdGhpcy5lbmNvZGVXcml0ZUFzU3RvcmFnZUJ1ZmZlckluUmVuZGVyUGFzcyhoZWxwZXIu
cmVuZGVyQnVuZGxlRW5jb2RlciwgYnVmZmVyLCB2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICBjYXNlICdjb21wdXRlLXBhc3MtZW5jb2Rlcic6CisgICAgICAgICAgICBhc3Nl
cnQoaGVscGVyLmNvbXB1dGVQYXNzRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgICAg
IHRoaXMuZW5jb2RlV3JpdGVBc1N0b3JhZ2VCdWZmZXJJbkNvbXB1dGVQYXNzKGhlbHBlci5jb21w
dXRlUGFzc0VuY29kZXIsIGJ1ZmZlciwgdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHVucmVhY2hhYmxlKCk7CisgICAgICAgIH0KKwog
ICAgICAgICBicmVhazsKICAgICAgIGNhc2UgJ2IyYi1jb3B5JzoKLSAgICAgICAgYXdhaXQgdGhp
cy5lbmNvZGVXcml0ZUJ5QjJCQ29weShlbmNvZGVyLCBidWZmZXIsIHZhbHVlKTsKKyAgICAgICAg
YXNzZXJ0KGhlbHBlci5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgdGhp
cy5lbmNvZGVXcml0ZUJ5QjJCQ29weShoZWxwZXIuY29tbWFuZEVuY29kZXIsIGJ1ZmZlciwgd3Jp
dGVPcFNsb3QpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgJ3QyYi1jb3B5JzoKLSAgICAg
ICAgYXdhaXQgdGhpcy5lbmNvZGVXcml0ZUJ5VDJCQ29weShlbmNvZGVyLCBidWZmZXIsIHZhbHVl
KTsKKyAgICAgICAgYXNzZXJ0KGhlbHBlci5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsK
KyAgICAgICAgdGhpcy5lbmNvZGVXcml0ZUJ5VDJCQ29weShoZWxwZXIuY29tbWFuZEVuY29kZXIs
IGJ1ZmZlciwgd3JpdGVPcFNsb3QpOwogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgIHVucmVhY2hhYmxlKCk7CiAgICAgfQogICB9
CiAKLSAgYXN5bmMgY3JlYXRlQ29tbWFuZEJ1ZmZlcldpdGhXcml0ZU9wKHdyaXRlT3AsIGJ1ZmZl
ciwgdmFsdWUpIHsKLSAgICBjb25zdCBlbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsKLSAgICBhd2FpdCB0aGlzLmVuY29kZVdyaXRlT3AoZW5jb2Rlciwgd3JpdGVP
cCwgYnVmZmVyLCB2YWx1ZSk7Ci0gICAgcmV0dXJuIGVuY29kZXIuZmluaXNoKCk7CisgIC8vIENy
ZWF0ZSBhIGNvbXB1dGUgcGlwZWxpbmU6IHJlYWQgZnJvbSBzcmMgYnVmZmVyIGFuZCB3cml0ZSBp
dCBpbnRvIHRoZSBzdG9yYWdlIGJ1ZmZlci4KKyAgY3JlYXRlU3RvcmFnZVJlYWRDb21wdXRlUGlw
ZWxpbmUoKSB7CisgICAgY29uc3Qgd2dzbENvbXB1dGUgPSBgCisgICAgICBzdHJ1Y3QgRGF0YSB7
CisgICAgICAgIGEgOiB1MzIKKyAgICAgIH07CisKKyAgICAgIEBncm91cCgwKSBAYmluZGluZygw
KSB2YXI8c3RvcmFnZSwgcmVhZD4gc3JjRGF0YSA6IERhdGE7CisgICAgICBAZ3JvdXAoMCkgQGJp
bmRpbmcoMSkgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IGRzdERhdGEgOiBEYXRhOworCisgICAg
ICBAc3RhZ2UoY29tcHV0ZSkgQHdvcmtncm91cF9zaXplKDEpIGZuIG1haW4oKSB7CisgICAgICAg
IGRzdERhdGEuYSA9IHNyY0RhdGEuYTsKKyAgICAgIH0KKyAgICBgOworCisgICAgcmV0dXJuIHRo
aXMuZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7CisgICAgICBjb21wdXRlOiB7CisgICAg
ICAgIG1vZHVsZTogdGhpcy5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKKyAgICAgICAgICBj
b2RlOiB3Z3NsQ29tcHV0ZSwKKyAgICAgICAgfSksCisKKyAgICAgICAgZW50cnlQb2ludDogJ21h
aW4nLAorICAgICAgfSwKKyAgICB9KTsKKyAgfQorCisgIGNyZWF0ZUJpbmRHcm91cFNyY0RzdEJ1
ZmZlcihwaXBlbGluZSwgc3JjQnVmZmVyLCBkc3RCdWZmZXIpIHsKKyAgICByZXR1cm4gdGhpcy5k
ZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAgICAgIGxheW91dDogcGlwZWxpbmUuZ2V0QmluZEdy
b3VwTGF5b3V0KDApLAorICAgICAgZW50cmllczogWworICAgICAgICB7IGJpbmRpbmc6IDAsIHJl
c291cmNlOiB7IGJ1ZmZlcjogc3JjQnVmZmVyIH0gfSwKKyAgICAgICAgeyBiaW5kaW5nOiAxLCBy
ZXNvdXJjZTogeyBidWZmZXI6IGRzdEJ1ZmZlciB9IH0sCisgICAgICBdLAorICAgIH0pOworICB9
CisKKyAgLy8gQ3JlYXRlIGEgcmVuZGVyIHBpcGVsaW5lOiByZWFkIGZyb20gdmVydGV4L2luZGV4
IGJ1ZmZlciBhbmQgd3JpdGUgaXQgaW50byB0aGUgc3RvcmFnZSBkc3QgYnVmZmVyIGF0IGZyYWdt
ZW50IHN0YWdlLgorICBjcmVhdGVWZXJ0ZXhSZWFkUmVuZGVyUGlwZWxpbmUoKSB7CisgICAgY29u
c3Qgd2dzbFNoYWRlcnMgPSB7CisgICAgICB2ZXJ0ZXg6IGAKKyAgICAgIHN0cnVjdCBWZXJ0ZXhP
dXRwdXQgeworICAgICAgICBAYnVpbHRpbihwb3NpdGlvbikgcG9zaXRpb24gOiB2ZWM0PGYzMj4s
CisgICAgICAgIEBsb2NhdGlvbigwKSBAaW50ZXJwb2xhdGUoZmxhdCkgZGF0YSA6IHUzMiwKKyAg
ICAgIH07CisgICAgICAKKyAgICAgIEBzdGFnZSh2ZXJ0ZXgpIGZuIHZlcnRfbWFpbihAbG9jYXRp
b24oMCkgaW5wdXQ6IHUzMikgLT4gVmVydGV4T3V0cHV0IHsKKyAgICAgICAgdmFyIG91dHB1dCA6
IFZlcnRleE91dHB1dDsKKyAgICAgICAgb3V0cHV0LnBvc2l0aW9uID0gdmVjNDxmMzI+KDAuNSwg
MC41LCAwLjAsIDEuMCk7CisgICAgICAgIG91dHB1dC5kYXRhID0gaW5wdXQ7CisgICAgICAgIHJl
dHVybiBvdXRwdXQ7CisgICAgICB9CisgICAgICBgLAorICAgICAgZnJhZ21lbnQ6IGAKKyAgICAg
IHN0cnVjdCBEYXRhIHsKKyAgICAgICAgYSA6IHUzMgorICAgICAgfTsKKyAgICAgIAorICAgICAg
QGdyb3VwKDApIEBiaW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkX3dyaXRlPiBkYXRhIDogRGF0
YTsKKyAgICAgIAorICAgICAgQHN0YWdlKGZyYWdtZW50KSBmbiBmcmFnX21haW4oQGxvY2F0aW9u
KDApIEBpbnRlcnBvbGF0ZShmbGF0KSBpbnB1dCA6IHUzMikgLT4gQGxvY2F0aW9uKDApIHZlYzQ8
ZjMyPiB7CisgICAgICAgIGRhdGEuYSA9IGlucHV0OworICAgICAgICByZXR1cm4gdmVjNDxmMzI+
KCk7ICAvLyByZXN1bHQgZG9lcyd0IG1hdHRlcgorICAgICAgfQorICAgICAgYCwKKyAgICB9Owor
CisgICAgcmV0dXJuIHRoaXMuZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHsKKyAgICAgIHZl
cnRleDogeworICAgICAgICBtb2R1bGU6IHRoaXMuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
CisgICAgICAgICAgY29kZTogd2dzbFNoYWRlcnMudmVydGV4LAorICAgICAgICB9KSwKKworICAg
ICAgICBlbnRyeVBvaW50OiAndmVydF9tYWluJywKKyAgICAgICAgYnVmZmVyczogWworICAgICAg
ICAgIHsKKyAgICAgICAgICAgIGFycmF5U3RyaWRlOiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxF
TUVOVCwKKyAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFsKKyAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHNoYWRlckxvY2F0aW9uOiAwLAorICAgICAgICAgICAgICAgIG9mZnNldDogMCwK
KyAgICAgICAgICAgICAgICBmb3JtYXQ6ICd1aW50MzInLAorICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgXSwKKyAgICAgICAgICB9LAorICAgICAgICBdLAorICAgICAgfSwKKworICAgICAg
ZnJhZ21lbnQ6IHsKKyAgICAgICAgbW9kdWxlOiB0aGlzLmRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoeworICAgICAgICAgIGNvZGU6IHdnc2xTaGFkZXJzLmZyYWdtZW50LAorICAgICAgICB9KSwK
KworICAgICAgICBlbnRyeVBvaW50OiAnZnJhZ19tYWluJywKKyAgICAgICAgdGFyZ2V0czogW3sg
Zm9ybWF0OiAncmdiYTh1bm9ybScgfV0sCisgICAgICB9LAorCisgICAgICBwcmltaXRpdmU6IHsg
dG9wb2xvZ3k6ICdwb2ludC1saXN0JyB9LAorICAgIH0pOworICB9CisKKyAgLy8gQ3JlYXRlIGEg
cmVuZGVyIHBpcGVsaW5lOiByZWFkIGZyb20gdW5pZm9ybSBidWZmZXIgYW5kIHdyaXRlIGl0IGlu
dG8gdGhlIHN0b3JhZ2UgZHN0IGJ1ZmZlciBhdCBmcmFnbWVudCBzdGFnZS4KKyAgY3JlYXRlVW5p
Zm9ybVJlYWRSZW5kZXJQaXBlbGluZSgpIHsKKyAgICBjb25zdCB3Z3NsU2hhZGVycyA9IHsKKyAg
ICAgIHZlcnRleDoga0R1bW15VmVydGV4U2hhZGVyLAorICAgICAgZnJhZ21lbnQ6IGAKKyAgICAg
IHN0cnVjdCBEYXRhIHsKKyAgICAgICAgYSA6IHUzMgorICAgICAgfTsKKyAgICAgIAorICAgICAg
QGdyb3VwKDApIEBiaW5kaW5nKDApIHZhcjx1bmlmb3JtPiBjb25zdGFudDogRGF0YTsKKyAgICAg
IEBncm91cCgwKSBAYmluZGluZygxKSB2YXI8c3RvcmFnZSwgcmVhZF93cml0ZT4gZGF0YSA6IERh
dGE7CisgICAgICAKKyAgICAgIEBzdGFnZShmcmFnbWVudCkgZm4gZnJhZ19tYWluKCkgLT4gQGxv
Y2F0aW9uKDApIHZlYzQ8ZjMyPiB7CisgICAgICAgIGRhdGEuYSA9IGNvbnN0YW50LmE7CisgICAg
ICAgIHJldHVybiB2ZWM0PGYzMj4oKTsgIC8vIHJlc3VsdCBkb2VzJ3QgbWF0dGVyCisgICAgICB9
CisgICAgICBgLAorICAgIH07CisKKyAgICByZXR1cm4gdGhpcy5jcmVhdGVUcml2aWFsUmVuZGVy
UGlwZWxpbmUod2dzbFNoYWRlcnMpOworICB9CisKKyAgLy8gQ3JlYXRlIGEgcmVuZGVyIHBpcGVs
aW5lOiByZWFkIGZyb20gc3RvcmFnZSBzcmMgYnVmZmVyIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBz
dG9yYWdlIGRzdCBidWZmZXIgYXQgZnJhZ21lbnQgc3RhZ2UuCisgIGNyZWF0ZVN0b3JhZ2VSZWFk
UmVuZGVyUGlwZWxpbmUoKSB7CisgICAgY29uc3Qgd2dzbFNoYWRlcnMgPSB7CisgICAgICB2ZXJ0
ZXg6IGtEdW1teVZlcnRleFNoYWRlciwKKyAgICAgIGZyYWdtZW50OiBgCisgICAgICAgIHN0cnVj
dCBEYXRhIHsKKyAgICAgICAgICBhIDogdTMyCisgICAgICAgIH07CisKKyAgICAgICAgQGdyb3Vw
KDApIEBiaW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkPiBzcmNEYXRhIDogRGF0YTsKKyAgICAg
ICAgQGdyb3VwKDApIEBiaW5kaW5nKDEpIHZhcjxzdG9yYWdlLCByZWFkX3dyaXRlPiBkc3REYXRh
IDogRGF0YTsKKworICAgICAgICBAc3RhZ2UoZnJhZ21lbnQpIGZuIGZyYWdfbWFpbigpIC0+IEBs
b2NhdGlvbigwKSB2ZWM0PGYzMj4geworICAgICAgICAgIGRzdERhdGEuYSA9IHNyY0RhdGEuYTsK
KyAgICAgICAgICByZXR1cm4gdmVjNDxmMzI+KCk7ICAvLyByZXN1bHQgZG9lcyd0IG1hdHRlcgor
ICAgICAgICB9CisgICAgICBgLAorICAgIH07CisKKyAgICByZXR1cm4gdGhpcy5kZXZpY2UuY3Jl
YXRlUmVuZGVyUGlwZWxpbmUoeworICAgICAgdmVydGV4OiB7CisgICAgICAgIG1vZHVsZTogdGhp
cy5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKKyAgICAgICAgICBjb2RlOiB3Z3NsU2hhZGVy
cy52ZXJ0ZXgsCisgICAgICAgIH0pLAorCisgICAgICAgIGVudHJ5UG9pbnQ6ICd2ZXJ0X21haW4n
LAorICAgICAgfSwKKworICAgICAgZnJhZ21lbnQ6IHsKKyAgICAgICAgbW9kdWxlOiB0aGlzLmRl
dmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeworICAgICAgICAgIGNvZGU6IHdnc2xTaGFkZXJzLmZy
YWdtZW50LAorICAgICAgICB9KSwKKworICAgICAgICBlbnRyeVBvaW50OiAnZnJhZ19tYWluJywK
KyAgICAgICAgdGFyZ2V0czogW3sgZm9ybWF0OiAncmdiYTh1bm9ybScgfV0sCisgICAgICB9LAor
CisgICAgICBwcmltaXRpdmU6IHsgdG9wb2xvZ3k6ICdwb2ludC1saXN0JyB9LAorICAgIH0pOwor
ICB9CisKKyAgLy8gV3JpdGUgYnVmZmVyIHZpYSBkaXNwYXRjaCBjYWxsIGluIGNvbXB1dGUgcGFz
cy4KKyAgZW5jb2RlUmVhZEFzU3RvcmFnZUJ1ZmZlckluQ29tcHV0ZVBhc3MocGFzcywgc3JjQnVm
ZmVyLCBkc3RCdWZmZXIpIHsKKyAgICBjb25zdCBwaXBlbGluZSA9IHRoaXMuY3JlYXRlU3RvcmFn
ZVJlYWRDb21wdXRlUGlwZWxpbmUoKTsKKyAgICBjb25zdCBiaW5kR3JvdXAgPSB0aGlzLmNyZWF0
ZUJpbmRHcm91cFNyY0RzdEJ1ZmZlcihwaXBlbGluZSwgc3JjQnVmZmVyLCBkc3RCdWZmZXIpOwor
ICAgIHBhc3Muc2V0UGlwZWxpbmUocGlwZWxpbmUpOworICAgIHBhc3Muc2V0QmluZEdyb3VwKDAs
IGJpbmRHcm91cCk7CisgICAgcGFzcy5kaXNwYXRjaCgxKTsKKyAgfQorCisgIC8vIFdyaXRlIGJ1
ZmZlciB2aWEgZGlzcGF0Y2hJbmRpcmVjdCBjYWxsIGluIGNvbXB1dGUgcGFzcy4KKyAgZW5jb2Rl
UmVhZEFzSW5kaXJlY3RCdWZmZXJJbkNvbXB1dGVQYXNzKHBhc3MsIHNyY0J1ZmZlciwgZHN0QnVm
ZmVyLCB2YWx1ZSkgeworICAgIGNvbnN0IHBpcGVsaW5lID0gdGhpcy5jcmVhdGVTdG9yYWdlV3Jp
dGVDb21wdXRlUGlwZWxpbmUodmFsdWUpOworICAgIGNvbnN0IGJpbmRHcm91cCA9IHRoaXMuY3Jl
YXRlQmluZEdyb3VwKHBpcGVsaW5lLCBkc3RCdWZmZXIpOworICAgIHBhc3Muc2V0UGlwZWxpbmUo
cGlwZWxpbmUpOworICAgIHBhc3Muc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7CisgICAgcGFz
cy5kaXNwYXRjaEluZGlyZWN0KHNyY0J1ZmZlciwgMCk7CisgIH0KKworICAvLyBSZWFkIGFzIHZl
cnRleCBpbnB1dCBhbmQgd3JpdGUgYnVmZmVyIHZpYSBkcmF3IGNhbGwgaW4gcmVuZGVyIHBhc3Mu
IFVzZSBidW5kbGUgaWYgbmVlZGVkLgorICBlbmNvZGVSZWFkQXNWZXJ0ZXhCdWZmZXJJblJlbmRl
clBhc3MocmVuZGVyZXIsIHNyY0J1ZmZlciwgZHN0QnVmZmVyKSB7CisgICAgY29uc3QgcGlwZWxp
bmUgPSB0aGlzLmNyZWF0ZVZlcnRleFJlYWRSZW5kZXJQaXBlbGluZSgpOworICAgIGNvbnN0IGJp
bmRHcm91cCA9IHRoaXMuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7CisgICAgICBsYXlvdXQ6IHBp
cGVsaW5lLmdldEJpbmRHcm91cExheW91dCgwKSwKKyAgICAgIGVudHJpZXM6IFt7IGJpbmRpbmc6
IDAsIHJlc291cmNlOiB7IGJ1ZmZlcjogZHN0QnVmZmVyIH0gfV0sCisgICAgfSk7CisKKyAgICBy
ZW5kZXJlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKKyAgICByZW5kZXJlci5zZXRQaXBl
bGluZShwaXBlbGluZSk7CisgICAgcmVuZGVyZXIuc2V0VmVydGV4QnVmZmVyKDAsIHNyY0J1ZmZl
cik7CisgICAgcmVuZGVyZXIuZHJhdygxKTsKICAgfQogCi0gIGFzeW5jIHN1Ym1pdFdyaXRlT3Ao
d3JpdGVPcCwgYnVmZmVyLCB2YWx1ZSkgewotICAgIGlmICh3cml0ZU9wID09PSAnd3JpdGUtYnVm
ZmVyJykgewotICAgICAgdGhpcy53cml0ZUJ5V3JpdGVCdWZmZXIoYnVmZmVyLCB2YWx1ZSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgIGNvbnN0IGVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOwotICAgICAgYXdhaXQgdGhpcy5lbmNvZGVXcml0ZU9wKGVuY29kZXIsIHdy
aXRlT3AsIGJ1ZmZlciwgdmFsdWUpOwotICAgICAgdGhpcy5kZXZpY2UucXVldWUuc3VibWl0KFtl
bmNvZGVyLmZpbmlzaCgpXSk7CisgIC8vIFJlYWQgYXMgaW5kZXggaW5wdXQgYW5kIHdyaXRlIGJ1
ZmZlciB2aWEgZHJhdyBjYWxsIGluIHJlbmRlciBwYXNzLiBVc2UgYnVuZGxlIGlmIG5lZWRlZC4K
KyAgZW5jb2RlUmVhZEFzSW5kZXhCdWZmZXJJblJlbmRlclBhc3MocmVuZGVyZXIsIHNyY0J1ZmZl
ciwgZHN0QnVmZmVyLCB2ZXJ0ZXhCdWZmZXIpIHsKKyAgICBjb25zdCBwaXBlbGluZSA9IHRoaXMu
Y3JlYXRlVmVydGV4UmVhZFJlbmRlclBpcGVsaW5lKCk7CisgICAgY29uc3QgYmluZEdyb3VwID0g
dGhpcy5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAgICAgIGxheW91dDogcGlwZWxpbmUuZ2V0
QmluZEdyb3VwTGF5b3V0KDApLAorICAgICAgZW50cmllczogW3sgYmluZGluZzogMCwgcmVzb3Vy
Y2U6IHsgYnVmZmVyOiBkc3RCdWZmZXIgfSB9XSwKKyAgICB9KTsKKworICAgIHJlbmRlcmVyLnNl
dEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgIHJlbmRlcmVyLnNldFBpcGVsaW5lKHBpcGVs
aW5lKTsKKyAgICByZW5kZXJlci5zZXRWZXJ0ZXhCdWZmZXIoMCwgdmVydGV4QnVmZmVyKTsKKyAg
ICByZW5kZXJlci5zZXRJbmRleEJ1ZmZlcihzcmNCdWZmZXIsICd1aW50MzInKTsKKyAgICByZW5k
ZXJlci5kcmF3SW5kZXhlZCgxKTsKKyAgfQorCisgIC8vIFJlYWQgYXMgaW5kaXJlY3QgaW5wdXQg
YW5kIHdyaXRlIGJ1ZmZlciB2aWEgZHJhdyBjYWxsIGluIHJlbmRlciBwYXNzLiBVc2UgYnVuZGxl
IGlmIG5lZWRlZC4KKyAgZW5jb2RlUmVhZEFzSW5kaXJlY3RCdWZmZXJJblJlbmRlclBhc3MocmVu
ZGVyZXIsIHNyY0J1ZmZlciwgZHN0QnVmZmVyLCB2ZXJ0ZXhCdWZmZXIpIHsKKyAgICBjb25zdCBw
aXBlbGluZSA9IHRoaXMuY3JlYXRlVmVydGV4UmVhZFJlbmRlclBpcGVsaW5lKCk7CisgICAgY29u
c3QgYmluZEdyb3VwID0gdGhpcy5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAgICAgIGxheW91
dDogcGlwZWxpbmUuZ2V0QmluZEdyb3VwTGF5b3V0KDApLAorICAgICAgZW50cmllczogW3sgYmlu
ZGluZzogMCwgcmVzb3VyY2U6IHsgYnVmZmVyOiBkc3RCdWZmZXIgfSB9XSwKKyAgICB9KTsKKwor
ICAgIHJlbmRlcmVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgIHJlbmRlcmVyLnNl
dFBpcGVsaW5lKHBpcGVsaW5lKTsKKyAgICByZW5kZXJlci5zZXRWZXJ0ZXhCdWZmZXIoMCwgdmVy
dGV4QnVmZmVyKTsKKyAgICByZW5kZXJlci5kcmF3SW5kaXJlY3Qoc3JjQnVmZmVyLCAwKTsKKyAg
fQorCisgIC8vIFJlYWQgYXMgaW5kZXhlZCBpbmRpcmVjdCBpbnB1dCBhbmQgd3JpdGUgYnVmZmVy
IHZpYSBkcmF3IGNhbGwgaW4gcmVuZGVyIHBhc3MuIFVzZSBidW5kbGUgaWYgbmVlZGVkLgorICBl
bmNvZGVSZWFkQXNJbmRleGVkSW5kaXJlY3RCdWZmZXJJblJlbmRlclBhc3MoCisgICAgcmVuZGVy
ZXIsCisgICAgc3JjQnVmZmVyLAorICAgIGRzdEJ1ZmZlciwKKyAgICB2ZXJ0ZXhCdWZmZXIsCisg
ICAgaW5kZXhCdWZmZXIKKyAgKSB7CisgICAgY29uc3QgcGlwZWxpbmUgPSB0aGlzLmNyZWF0ZVZl
cnRleFJlYWRSZW5kZXJQaXBlbGluZSgpOworICAgIGNvbnN0IGJpbmRHcm91cCA9IHRoaXMuZGV2
aWNlLmNyZWF0ZUJpbmRHcm91cCh7CisgICAgICBsYXlvdXQ6IHBpcGVsaW5lLmdldEJpbmRHcm91
cExheW91dCgwKSwKKyAgICAgIGVudHJpZXM6IFt7IGJpbmRpbmc6IDAsIHJlc291cmNlOiB7IGJ1
ZmZlcjogZHN0QnVmZmVyIH0gfV0sCisgICAgfSk7CisKKyAgICByZW5kZXJlci5zZXRCaW5kR3Jv
dXAoMCwgYmluZEdyb3VwKTsKKyAgICByZW5kZXJlci5zZXRQaXBlbGluZShwaXBlbGluZSk7Cisg
ICAgcmVuZGVyZXIuc2V0VmVydGV4QnVmZmVyKDAsIHZlcnRleEJ1ZmZlcik7CisgICAgcmVuZGVy
ZXIuc2V0SW5kZXhCdWZmZXIoaW5kZXhCdWZmZXIsICd1aW50MzInKTsKKyAgICByZW5kZXJlci5k
cmF3SW5kZXhlZEluZGlyZWN0KHNyY0J1ZmZlciwgMCk7CisgIH0KKworICAvLyBSZWFkIGFzIHVu
aWZvcm0gYnVmZmVyIGFuZCB3cml0ZSBidWZmZXIgdmlhIGRyYXcgY2FsbCBpbiByZW5kZXIgcGFz
cy4gVXNlIGJ1bmRsZSBpZiBuZWVkZWQuCisgIGVuY29kZVJlYWRBc1VuaWZvcm1CdWZmZXJJblJl
bmRlclBhc3MocmVuZGVyZXIsIHNyY0J1ZmZlciwgZHN0QnVmZmVyKSB7CisgICAgY29uc3QgcGlw
ZWxpbmUgPSB0aGlzLmNyZWF0ZVVuaWZvcm1SZWFkUmVuZGVyUGlwZWxpbmUoKTsKKyAgICBjb25z
dCBiaW5kR3JvdXAgPSB0aGlzLmRldmljZS5jcmVhdGVCaW5kR3JvdXAoeworICAgICAgbGF5b3V0
OiBwaXBlbGluZS5nZXRCaW5kR3JvdXBMYXlvdXQoMCksCisgICAgICBlbnRyaWVzOiBbCisgICAg
ICAgIHsgYmluZGluZzogMCwgcmVzb3VyY2U6IHsgYnVmZmVyOiBzcmNCdWZmZXIgfSB9LAorICAg
ICAgICB7IGJpbmRpbmc6IDEsIHJlc291cmNlOiB7IGJ1ZmZlcjogZHN0QnVmZmVyIH0gfSwKKyAg
ICAgIF0sCisgICAgfSk7CisKKyAgICByZW5kZXJlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3Vw
KTsKKyAgICByZW5kZXJlci5zZXRQaXBlbGluZShwaXBlbGluZSk7CisgICAgcmVuZGVyZXIuZHJh
dygxKTsKKyAgfQorCisgIC8vIFJlYWQgYXMgc3RvcmFnZSBidWZmZXIgYW5kIHdyaXRlIGJ1ZmZl
ciB2aWEgZHJhdyBjYWxsIGluIHJlbmRlciBwYXNzLiBVc2UgYnVuZGxlIGlmIG5lZWRlZC4KKyAg
ZW5jb2RlUmVhZEFzU3RvcmFnZUJ1ZmZlckluUmVuZGVyUGFzcyhyZW5kZXJlciwgc3JjQnVmZmVy
LCBkc3RCdWZmZXIpIHsKKyAgICBjb25zdCBwaXBlbGluZSA9IHRoaXMuY3JlYXRlU3RvcmFnZVJl
YWRSZW5kZXJQaXBlbGluZSgpOworICAgIGNvbnN0IGJpbmRHcm91cCA9IHRoaXMuY3JlYXRlQmlu
ZEdyb3VwU3JjRHN0QnVmZmVyKHBpcGVsaW5lLCBzcmNCdWZmZXIsIGRzdEJ1ZmZlcik7CisKKyAg
ICByZW5kZXJlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKKyAgICByZW5kZXJlci5zZXRQ
aXBlbGluZShwaXBlbGluZSk7CisgICAgcmVuZGVyZXIuZHJhdygxLCAxLCAwLCAwKTsKKyAgfQor
CisgIC8vIFJlYWQgYW5kIHdyaXRlIHZpYSBCdWZmZXJUb0J1ZmZlciBjb3B5LgorICBlbmNvZGVS
ZWFkQnlCMkJDb3B5KGVuY29kZXIsIHNyY0J1ZmZlciwgZHN0QnVmZmVyKSB7CisgICAgLy8gVGhl
IGIyYiBjb3B5IGlzIGp1c3QgZW5jb2RlZCBpbnRvIGNvbW1hbmQgZW5jb2RlciwgaXQgZG9lc24n
dCB3cml0ZSBpbW1lZGlhdGVseS4KKyAgICBlbmNvZGVyLmNvcHlCdWZmZXJUb0J1ZmZlcihzcmNC
dWZmZXIsIDAsIGRzdEJ1ZmZlciwgMCwgVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQpOwor
ICB9CisKKyAgLy8gUmVhZCBhbmQgV3JpdGUgdGV4dHVyZSB2aWEgQnVmZmVyVG9UZXh0dXJlIGNv
cHkuCisgIGVuY29kZVJlYWRCeUIyVENvcHkoZW5jb2Rlciwgc3JjQnVmZmVyLCBkc3RCdWZmZXIp
IHsKKyAgICBjb25zdCB0bXBUZXh0dXJlID0gdGhpcy50cmFja0ZvckNsZWFudXAoCisgICAgICB0
aGlzLmRldmljZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgICAgc2l6ZTogeyB3aWR0aDogMSwgaGVp
Z2h0OiAxLCBkZXB0aE9yQXJyYXlMYXllcnM6IDEgfSwKKyAgICAgICAgZm9ybWF0OiAncjMydWlu
dCcsCisgICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVUZXh0dXJl
VXNhZ2UuQ09QWV9EU1QsCisgICAgICB9KQorICAgICk7CisKKyAgICAvLyBUaGUgYjJ0IGNvcHkg
aXMganVzdCBlbmNvZGVkIGludG8gY29tbWFuZCBlbmNvZGVyLCBpdCBkb2Vzbid0IHdyaXRlIGlt
bWVkaWF0ZWx5LgorICAgIGVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZSgKKyAgICAgIHsgYnVm
ZmVyOiBzcmNCdWZmZXIsIGJ5dGVzUGVyUm93OiAyNTYgfSwKKyAgICAgIHsgdGV4dHVyZTogdG1w
VGV4dHVyZSwgbWlwTGV2ZWw6IDAsIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0gfSwKKyAg
ICAgIHsgd2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGhPckFycmF5TGF5ZXJzOiAxIH0KKyAgICAp
OworCisgICAgLy8gVGhlIHQyYiBjb3B5IGlzIGp1c3QgZW5jb2RlZCBpbnRvIGNvbW1hbmQgZW5j
b2RlciwgaXQgZG9lc24ndCB3cml0ZSBpbW1lZGlhdGVseS4KKyAgICBlbmNvZGVyLmNvcHlUZXh0
dXJlVG9CdWZmZXIoCisgICAgICB7IHRleHR1cmU6IHRtcFRleHR1cmUsIG1pcExldmVsOiAwLCBv
cmlnaW46IHsgeDogMCwgeTogMCwgejogMCB9IH0sCisgICAgICB7IGJ1ZmZlcjogZHN0QnVmZmVy
LCBieXRlc1BlclJvdzogMjU2IH0sCisgICAgICB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEsIGRlcHRo
T3JBcnJheUxheWVyczogMSB9CisgICAgKTsKKyAgfQorCisgIGVuY29kZVJlYWRPcChoZWxwZXIs
IG9wZXJhdGlvbiwgY29udGV4dCwgc3JjQnVmZmVyLCBkc3RCdWZmZXIpIHsKKyAgICBoZWxwZXIu
ZW5zdXJlQ29udGV4dChjb250ZXh0KTsKKworICAgIGNvbnN0IHJlbmRlcmVyID0KKyAgICAgIGNv
bnRleHQgPT09ICdyZW5kZXItYnVuZGxlLWVuY29kZXInID8gaGVscGVyLnJlbmRlckJ1bmRsZUVu
Y29kZXIgOiBoZWxwZXIucmVuZGVyUGFzc0VuY29kZXI7CisgICAgY29uc3QgY29tcHV0ZVBhc3Mg
PSBjb250ZXh0ID09PSAnY29tcHV0ZS1wYXNzLWVuY29kZXInID8gaGVscGVyLmNvbXB1dGVQYXNz
RW5jb2RlciA6IHVuZGVmaW5lZDsKKworICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CisgICAgICBj
YXNlICdpbnB1dC12ZXJ0ZXgnOgorICAgICAgICAvLyBUaGUgc3JjQnVmZmVyIGlzIHVzZWQgYXMg
dmVydGV4QnVmZmVyLgorICAgICAgICAvLyBkcmF3IHdyaXRlcyB0aGUgc2FtZSB2YWx1ZSBpbiBz
cmNCdWZmZXJbMF0gdG8gZHN0QnVmZmVyWzBdLgorICAgICAgICBhc3NlcnQocmVuZGVyZXIgIT09
IHVuZGVmaW5lZCk7CisgICAgICAgIHRoaXMuZW5jb2RlUmVhZEFzVmVydGV4QnVmZmVySW5SZW5k
ZXJQYXNzKHJlbmRlcmVyLCBzcmNCdWZmZXIsIGRzdEJ1ZmZlcik7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnaW5wdXQtaW5kZXgnOgorICAgICAgICAvLyBUaGUgc3JjQnVmZmVyIGlzIHVz
ZWQgYXMgaW5kZXhCdWZmZXIuCisgICAgICAgIC8vIFdpdGggdGhpcyB2ZXJ0ZXhCdWZmZXIsIGRy
YXdJbmRleGVkIHdyaXRlcyB0aGUgc2FtZSB2YWx1ZSBpbiBzcmNCdWZmZXJbMF0gdG8gZHN0QnVm
ZmVyWzBdLgorICAgICAgICBhc3NlcnQocmVuZGVyZXIgIT09IHVuZGVmaW5lZCk7CisgICAgICAg
IGFzc2VydCh0aGlzLnZlcnRleEJ1ZmZlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5l
bmNvZGVSZWFkQXNJbmRleEJ1ZmZlckluUmVuZGVyUGFzcyhyZW5kZXJlciwgc3JjQnVmZmVyLCBk
c3RCdWZmZXIsIHRoaXMudmVydGV4QnVmZmVyKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
ICdpbnB1dC1pbmRpcmVjdCc6CisgICAgICAgIC8vIFRoZSBzcmNCdWZmZXIgaXMgdXNlZCBhcyBp
bmRpcmVjdEJ1ZmZlciBmb3IgZHJhd0luZGlyZWN0LgorICAgICAgICAvLyBzcmNCdWZmZXJbMF0g
PSAwIG9yIDEgKHZlcnRleENvdW50KSwgd2hpY2ggd2lsbCBkZWNpZGUgdGhlIHZhbHVlIHdyaXR0
ZW4gaW50byBkc3RCdWZmZXIgdG8gYmUgZWl0aGVyIDAgb3IgMS4KKyAgICAgICAgYXNzZXJ0KHJl
bmRlcmVyICE9PSB1bmRlZmluZWQpOworICAgICAgICBhc3NlcnQodGhpcy52ZXJ0ZXhCdWZmZXIg
IT09IHVuZGVmaW5lZCk7CisgICAgICAgIHRoaXMuZW5jb2RlUmVhZEFzSW5kaXJlY3RCdWZmZXJJ
blJlbmRlclBhc3MoCisgICAgICAgICAgcmVuZGVyZXIsCisgICAgICAgICAgc3JjQnVmZmVyLAor
ICAgICAgICAgIGRzdEJ1ZmZlciwKKyAgICAgICAgICB0aGlzLnZlcnRleEJ1ZmZlcgorICAgICAg
ICApOworCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnaW5wdXQtaW5kaXJlY3QtaW5kZXgn
OgorICAgICAgICAvLyBUaGUgc3JjQnVmZmVyIGlzIHVzZWQgYXMgaW5kaXJlY3RCdWZmZXIgZm9y
IGRyYXdJbmRleGVkSW5kaXJlY3QuCisgICAgICAgIC8vIHNyY0J1ZmZlclswXSA9IDAgb3IgMSAo
aW5kZXhDb3VudCksIHdoaWNoIHdpbGwgZGVjaWRlIHRoZSB2YWx1ZSB3cml0dGVuIGludG8gZHN0
QnVmZmVyIHRvIGJlIGVpdGhlciAwIG9yIDEuCisgICAgICAgIGFzc2VydChyZW5kZXJlciAhPT0g
dW5kZWZpbmVkKTsKKyAgICAgICAgYXNzZXJ0KHRoaXMudmVydGV4QnVmZmVyICE9PSB1bmRlZmlu
ZWQpOworICAgICAgICBhc3NlcnQodGhpcy5pbmRleEJ1ZmZlciAhPT0gdW5kZWZpbmVkKTsKKyAg
ICAgICAgdGhpcy5lbmNvZGVSZWFkQXNJbmRleGVkSW5kaXJlY3RCdWZmZXJJblJlbmRlclBhc3Mo
CisgICAgICAgICAgcmVuZGVyZXIsCisgICAgICAgICAgc3JjQnVmZmVyLAorICAgICAgICAgIGRz
dEJ1ZmZlciwKKyAgICAgICAgICB0aGlzLnZlcnRleEJ1ZmZlciwKKyAgICAgICAgICB0aGlzLmlu
ZGV4QnVmZmVyCisgICAgICAgICk7CisKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdpbnB1
dC1pbmRpcmVjdC1kaXNwYXRjaCc6CisgICAgICAgIC8vIFRoZSBzcmNCdWZmZXIgaXMgdXNlZCBh
cyBpbmRpcmVjdEJ1ZmZlciBmb3IgZGlzcGF0Y2guCisgICAgICAgIC8vIHNyY0J1ZmZlclswXSA9
IDAgb3IgMSAod29ya2dyb3VwQ291bnRYKSwgd2hpY2ggd2lsbCBkZWNpZGUgdGhlIHZhbHVlIHdy
aXR0ZW4gaW50byBkc3RCdWZmZXIgdG8gYmUgZWl0aGVyIDAgb3IgMS4KKyAgICAgICAgYXNzZXJ0
KGNvbXB1dGVQYXNzICE9PSB1bmRlZmluZWQpOworICAgICAgICB0aGlzLmVuY29kZVJlYWRBc0lu
ZGlyZWN0QnVmZmVySW5Db21wdXRlUGFzcyhjb21wdXRlUGFzcywgc3JjQnVmZmVyLCBkc3RCdWZm
ZXIsIDEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ2NvbnN0YW50LXVuaWZvcm0nOgor
ICAgICAgICAvLyBUaGUgc3JjQnVmZmVyIGlzIHVzZWQgYXMgdW5pZm9ybSBidWZmZXIuCisgICAg
ICAgIGFzc2VydChyZW5kZXJlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5lbmNvZGVS
ZWFkQXNVbmlmb3JtQnVmZmVySW5SZW5kZXJQYXNzKHJlbmRlcmVyLCBzcmNCdWZmZXIsIGRzdEJ1
ZmZlcik7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnc3RvcmFnZS1yZWFkJzoKKyAgICAg
ICAgc3dpdGNoIChjb250ZXh0KSB7CisgICAgICAgICAgY2FzZSAncmVuZGVyLXBhc3MtZW5jb2Rl
cic6CisgICAgICAgICAgY2FzZSAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJzoKKyAgICAgICAgICAg
IGFzc2VydChyZW5kZXJlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIHRoaXMuZW5jb2Rl
UmVhZEFzU3RvcmFnZUJ1ZmZlckluUmVuZGVyUGFzcyhyZW5kZXJlciwgc3JjQnVmZmVyLCBkc3RC
dWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAnY29tcHV0ZS1wYXNz
LWVuY29kZXInOgorICAgICAgICAgICAgYXNzZXJ0KGNvbXB1dGVQYXNzICE9PSB1bmRlZmluZWQp
OworICAgICAgICAgICAgdGhpcy5lbmNvZGVSZWFkQXNTdG9yYWdlQnVmZmVySW5Db21wdXRlUGFz
cyhjb21wdXRlUGFzcywgc3JjQnVmZmVyLCBkc3RCdWZmZXIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHVucmVhY2hhYmxlKCk7CisgICAgICAg
IH0KKworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ2IyYi1jb3B5JzoKKyAgICAgICAgYXNz
ZXJ0KGhlbHBlci5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgdGhpcy5l
bmNvZGVSZWFkQnlCMkJDb3B5KGhlbHBlci5jb21tYW5kRW5jb2Rlciwgc3JjQnVmZmVyLCBkc3RC
dWZmZXIpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ2IydC1jb3B5JzoKKyAgICAgICAg
YXNzZXJ0KGhlbHBlci5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgdGhp
cy5lbmNvZGVSZWFkQnlCMlRDb3B5KGhlbHBlci5jb21tYW5kRW5jb2Rlciwgc3JjQnVmZmVyLCBk
c3RCdWZmZXIpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHVucmVh
Y2hhYmxlKCk7CiAgICAgfQogICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9tdWx0aXBs
ZV9idWZmZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L29wZXJhdGlvbi9tZW1vcnlfc3luYy9idWZmZXIvbXVsdGlwbGVfYnVmZmVycy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjJkOTY0MGM5ZTkxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVy
YXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL211bHRpcGxlX2J1ZmZlcnMuaHRtbApAQCAtMCwwICsx
LDcgQEAKKworICAgICAgICAgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJl
ZiA9ICIvd2ViZ3B1L2N0cy5odHRwcy5odG1sP3E9d2ViZ3B1OmFwaSxvcGVyYXRpb24sbWVtb3J5
X3N5bmMsYnVmZmVyLG11bHRpcGxlX2J1ZmZlcnM6KiI7CisgICAgICAgICAgICAgICAgPC9zY3Jp
cHQ+CisgICAgICAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1v
cnlfc3luYy9idWZmZXIvbXVsdGlwbGVfYnVmZmVycy5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL211
bHRpcGxlX2J1ZmZlcnMuc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjMzMGViYTdkZTNhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9tdWx0
aXBsZV9idWZmZXJzLnNwZWMuanMKQEAgLTAsMCArMSw1MyBAQAorLyoqCisgKiBBVVRPLUdFTkVS
QVRFRCAtIERPIE5PVCBFRElULiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvY3Rz
CisgKiovIGV4cG9ydCBjb25zdCBkZXNjcmlwdGlvbiA9IGAKK01lbW9yeSBTeW5jaHJvbml6YXRp
b24gVGVzdHMgZm9yIG11bHRpcGxlIGJ1ZmZlcnM6IHJlYWQgYmVmb3JlIHdyaXRlLCByZWFkIGFm
dGVyIHdyaXRlLCBhbmQgd3JpdGUgYWZ0ZXIgd3JpdGUuCisKKy0gQ3JlYXRlIG11bHRpcGxlIHNy
YyBidWZmZXJzIGFuZCBpbml0aWFsaXplIGl0IHRvIDAsIHdhaXQgb24gdGhlIGZlbmNlIHRvIGVu
c3VyZSB0aGUgZGF0YSBpcyBpbml0aWFsaXplZC4KK1dyaXRlIE9wOiB3cml0ZSBhIHZhbHVlIChz
YXkgMSkgaW50byB0aGUgc3JjIGJ1ZmZlciB2aWEgcmVuZGVyIHBhc3MsIGNvcG11dGUgcGFzcywg
Y29weSwgd3JpdGUgYnVmZmVyLCBldGMuCitSZWFkIE9wOiByZWFkIHRoZSB2YWx1ZSBmcm9tIHRo
ZSBzcmMgYnVmZmVyIGFuZCB3cml0ZSBpdCB0byBkc3QgYnVmZmVyIHZpYSByZW5kZXIgcGFzcyAo
dmVydGV4LCBpbmRleCwgaW5kaXJlY3QgaW5wdXQsIHVuaWZvcm0sIHN0b3JhZ2UpLCBjb21wdXRl
IHBhc3MsIGNvcHkgZXRjLgorV2FpdCBvbiBhbm90aGVyIGZlbmNlLCB0aGVuIGNhbGwgZXhwZWN0
Q29udGVudHMgdG8gdmVyaWZ5IHRoZSBkc3QgYnVmZmVyIHZhbHVlLgorICAtIHg9IHdyaXRlIG9w
OiB7c3RvcmFnZSBidWZmZXIgaW4ge2NvbXB1dGUsIHJlbmRlciwgcmVuZGVyLXZpYS1idW5kbGV9
LCB0MmIgY29weSBkc3QsIGIyYiBjb3B5IGRzdCwgd3JpdGVCdWZmZXJ9CisgIC0geD0gcmVhZCBv
cDoge2luZGV4IGJ1ZmZlciwgdmVydGV4IGJ1ZmZlciwgaW5kaXJlY3QgYnVmZmVyIChkcmF3LCBk
cmF3IGluZGV4ZWQsIGRpc3BhdGNoKSwgdW5pZm9ybSBidWZmZXIsIHtyZWFkb25seSwgcmVhZHdy
aXRlfSBzdG9yYWdlIGJ1ZmZlciBpbiB7Y29tcHV0ZSwgcmVuZGVyLCByZW5kZXItdmlhLWJ1bmRs
ZX0sIGIyYiBjb3B5IHNyYywgYjJ0IGNvcHkgc3JjfQorICAtIHg9IHJlYWQtd3JpdGUgc2VxdWVu
Y2U6IHtyZWFkIHRoZW4gd3JpdGUsIHdyaXRlIHRoZW4gcmVhZCwgd3JpdGUgdGhlbiB3cml0ZX0K
KyAgLSB4PSBvcCBjb250ZXh0OiB7cXVldWUsIGNvbW1hbmQtZW5jb2RlciwgY29tcHV0ZS1wYXNz
LWVuY29kZXIsIHJlbmRlci1wYXNzLWVuY29kZXIsIHJlbmRlci1idW5kbGUtZW5jb2Rlcn0sIHg9
IG9wIGJvdW5kYXJ5OiB7cXVldWUtb3AsIGNvbW1hbmQtYnVmZmVyLCBwYXNzLCBleGVjdXRlLWJ1
bmRsZXMsIHJlbmRlci1idW5kbGV9CisgICAgLSBOb3QgZXZlcnkgY29udGV4dC9ib3VuZGFyeSBj
b21iaW5hdGlvbnMgYXJlIHZhbGlkLiBXZSBoYXZlIHRoZSBjaGVja09wc1ZhbGlkRm9yQ29udGV4
dCBmdW5jIHRvIGRvIHRoZSBmaWx0ZXJpbmcuCisgIC0gSWYgdHdvIHdyaXRlcyBhcmUgaW4gdGhl
IHNhbWUgcGFzc2VzLCByZW5kZXIgcmVzdWx0IGhhcyBsb29zZSBndWFyYW50ZWVzLgorCitUT0RP
OiBUZXN0cyB3aXRoIG1vcmUgdGhhbiBvbmUgYnVmZmVyIHRvIHRyeSB0byBzdHJlc3MgaW1wbGVt
ZW50YXRpb25zIGEgbGl0dGxlIGJpdCBtb3JlLgorYDsKK2ltcG9ydCB7IG1ha2VUZXN0R3JvdXAg
fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24vZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnOwor
CitpbXBvcnQgeyBCdWZmZXJTeW5jVGVzdCB9IGZyb20gJy4vYnVmZmVyX3N5bmNfdGVzdC5qcyc7
CisKK2V4cG9ydCBjb25zdCBnID0gbWFrZVRlc3RHcm91cChCdWZmZXJTeW5jVGVzdCk7CisKK2cu
dGVzdCgncncnKQorICAuZGVzYygKKyAgICBgCisgICAgUGVyZm9ybSBhICdyZWFkJyBvcGVyYXRp
b25zIG9uIG11bHRpcGxlIGJ1ZmZlcnMsIGZvbGxvd2VkIGJ5IGEgJ3dyaXRlJyBvcGVyYXRpb24u
CisgICAgT3BlcmF0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGEgJ2JvdW5kYXJ5JyAocGFzcywgZW5j
b2RlciwgcXVldWUtb3AsIGV0Yy4pLgorICAgIFRlc3QgdGhhdCB0aGUgcmVzdWx0cyBhcmUgc3lu
Y2hyb25pemVkLgorICAgIFRoZSByZWFkIHNob3VsZCBub3Qgc2VlIHRoZSBjb250ZW50cyB3cml0
dGVuIGJ5IHRoZSBzdWJzZXF1ZW50IHdyaXRlLmAKKyAgKQorICAudW5pbXBsZW1lbnRlZCgpOwor
CitnLnRlc3QoJ3dyJykKKyAgLmRlc2MoCisgICAgYAorICAgIFBlcmZvcm0gYSAnd3JpdGUnIG9w
ZXJhdGlvbiBvbiBvbiBtdWx0aXBsZSBidWZmZXJzLCBmb2xsb3dlZCBieSBhICdyZWFkJyBvcGVy
YXRpb24uCisgICAgT3BlcmF0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGEgJ2JvdW5kYXJ5JyAocGFz
cywgZW5jb2RlciwgcXVldWUtb3AsIGV0Yy4pLgorICAgIFRlc3QgdGhhdCB0aGUgcmVzdWx0cyBh
cmUgc3luY2hyb25pemVkLgorICAgIFRoZSByZWFkIHNob3VsZCBzZWUgZXhhY3RseSB0aGUgY29u
dGVudHMgd3JpdHRlbiBieSB0aGUgcHJldmlvdXMgd3JpdGUuYAorICApCisgIC51bmltcGxlbWVu
dGVkKCk7CisKK2cudGVzdCgnd3cnKQorICAuZGVzYygKKyAgICBgCisgICAgUGVyZm9ybSBhICdm
aXJzdCcgd3JpdGUgb3BlcmF0aW9uIG9uIG11bHRpcGxlIGJ1ZmZlcnMsIGZvbGxvd2VkIGJ5IGEg
J3NlY29uZCcgd3JpdGUgb3BlcmF0aW9uLgorICAgIE9wZXJhdGlvbnMgYXJlIHNlcGFyYXRlZCBi
eSBhICdib3VuZGFyeScgKHBhc3MsIGVuY29kZXIsIHF1ZXVlLW9wLCBldGMuKS4KKyAgICBUZXN0
IHRoYXQgdGhlIHJlc3VsdHMgYXJlIHN5bmNocm9uaXplZC4KKyAgICBUaGUgc2Vjb25kIHdyaXRl
IHNob3VsZCBvdmVyd3JpdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaXJzdC5gCisgICkKKyAgLnVu
aW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9zaW5nbGVfYnVmZmVyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3Bl
cmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9zaW5nbGVfYnVmZmVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlZjIyZTlhNDMxYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3Bl
cmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9zaW5nbGVfYnVmZmVyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxIEBACitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy9idWZmZXIvc2luZ2xlX2J1ZmZlci5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24v
bWVtb3J5X3N5bmMvYnVmZmVyL3NpbmdsZV9idWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmUzYzA5YTcxMTY1NQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9z
eW5jL2J1ZmZlci9zaW5nbGVfYnVmZmVyLmh0bWwKQEAgLTAsMCArMSw3IEBACisKKyAgICAgICAg
ICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiL3dlYmdwdS9jdHMu
aHR0cHMuaHRtbD9xPXdlYmdwdTphcGksb3BlcmF0aW9uLG1lbW9yeV9zeW5jLGJ1ZmZlcixzaW5n
bGVfYnVmZmVyOioiOworICAgICAgICAgICAgICAgIDwvc2NyaXB0PgorICAgICAgICAgICAgClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL3Npbmds
ZV9idWZmZXIuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9zaW5nbGVfYnVmZmVyLnNwZWMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lN2IwZGIyYzFjNjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29w
ZXJhdGlvbi9tZW1vcnlfc3luYy9idWZmZXIvc2luZ2xlX2J1ZmZlci5zcGVjLmpzCkBAIC0wLDAg
KzEsMjU3IEBACisvKioKKyAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9UIEVESVQuIFNvdXJjZTog
aHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9jdHMKKyAqKi8gZXhwb3J0IGNvbnN0IGRlc2NyaXB0
aW9uID0gYAorTWVtb3J5IFN5bmNocm9uaXphdGlvbiBUZXN0cyBmb3IgQnVmZmVyOiByZWFkIGJl
Zm9yZSB3cml0ZSwgcmVhZCBhZnRlciB3cml0ZSwgYW5kIHdyaXRlIGFmdGVyIHdyaXRlLgorCist
IENyZWF0ZSBhIHNyYyBidWZmZXIgYW5kIGluaXRpYWxpemUgaXQgdG8gMCwgd2FpdCBvbiB0aGUg
ZmVuY2UgdG8gZW5zdXJlIHRoZSBkYXRhIGlzIGluaXRpYWxpemVkLgorV3JpdGUgT3A6IHdyaXRl
IGEgdmFsdWUgKHNheSAxKSBpbnRvIHRoZSBzcmMgYnVmZmVyIHZpYSByZW5kZXIgcGFzcywgY29w
bXV0ZSBwYXNzLCBjb3B5LCB3cml0ZSBidWZmZXIsIGV0Yy4KK1JlYWQgT3A6IHJlYWQgdGhlIHZh
bHVlIGZyb20gdGhlIHNyYyBidWZmZXIgYW5kIHdyaXRlIGl0IHRvIGRzdCBidWZmZXIgdmlhIHJl
bmRlciBwYXNzICh2ZXJ0ZXgsIGluZGV4LCBpbmRpcmVjdCBpbnB1dCwgdW5pZm9ybSwgc3RvcmFn
ZSksIGNvbXB1dGUgcGFzcywgY29weSBldGMuCitXYWl0IG9uIGFub3RoZXIgZmVuY2UsIHRoZW4g
Y2FsbCBleHBlY3RDb250ZW50cyB0byB2ZXJpZnkgdGhlIGRzdCBidWZmZXIgdmFsdWUuCisgIC0g
eD0gd3JpdGUgb3A6IHtzdG9yYWdlIGJ1ZmZlciBpbiB7Y29tcHV0ZSwgcmVuZGVyLCByZW5kZXIt
dmlhLWJ1bmRsZX0sIHQyYiBjb3B5IGRzdCwgYjJiIGNvcHkgZHN0LCB3cml0ZUJ1ZmZlcn0KKyAg
LSB4PSByZWFkIG9wOiB7aW5kZXggYnVmZmVyLCB2ZXJ0ZXggYnVmZmVyLCBpbmRpcmVjdCBidWZm
ZXIgKGRyYXcsIGRyYXcgaW5kZXhlZCwgZGlzcGF0Y2gpLCB1bmlmb3JtIGJ1ZmZlciwge3JlYWRv
bmx5LCByZWFkd3JpdGV9IHN0b3JhZ2UgYnVmZmVyIGluIHtjb21wdXRlLCByZW5kZXIsIHJlbmRl
ci12aWEtYnVuZGxlfSwgYjJiIGNvcHkgc3JjLCBiMnQgY29weSBzcmN9CisgIC0geD0gcmVhZC13
cml0ZSBzZXF1ZW5jZToge3JlYWQgdGhlbiB3cml0ZSwgd3JpdGUgdGhlbiByZWFkLCB3cml0ZSB0
aGVuIHdyaXRlfQorICAtIHg9IG9wIGNvbnRleHQ6IHtxdWV1ZSwgY29tbWFuZC1lbmNvZGVyLCBj
b21wdXRlLXBhc3MtZW5jb2RlciwgcmVuZGVyLXBhc3MtZW5jb2RlciwgcmVuZGVyLWJ1bmRsZS1l
bmNvZGVyfSwgeD0gb3AgYm91bmRhcnk6IHtxdWV1ZS1vcCwgY29tbWFuZC1idWZmZXIsIHBhc3Ms
IGV4ZWN1dGUtYnVuZGxlcywgcmVuZGVyLWJ1bmRsZX0KKyAgICAtIE5vdCBldmVyeSBjb250ZXh0
L2JvdW5kYXJ5IGNvbWJpbmF0aW9ucyBhcmUgdmFsaWQuIFdlIGhhdmUgdGhlIGNoZWNrT3BzVmFs
aWRGb3JDb250ZXh0IGZ1bmMgdG8gZG8gdGhlIGZpbHRlcmluZy4KKyAgLSBJZiB0d28gd3JpdGVz
IGFyZSBpbiB0aGUgc2FtZSBwYXNzZXMsIHJlbmRlciByZXN1bHQgaGFzIGxvb3NlIGd1YXJhbnRl
ZXMuCitgOworaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Nv
bW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7CitpbXBvcnQgeworICBrT3BlcmF0aW9uQm91
bmRhcmllcywKKyAga0JvdW5kYXJ5SW5mbywKKyAgT3BlcmF0aW9uQ29udGV4dEhlbHBlciwKK30g
ZnJvbSAnLi4vb3BlcmF0aW9uX2NvbnRleHRfaGVscGVyLmpzJzsKKworaW1wb3J0IHsKKyAga0Fs
bFJlYWRPcHMsCisgIGtBbGxXcml0ZU9wcywKKyAgQnVmZmVyU3luY1Rlc3QsCisgIGNoZWNrT3Bz
VmFsaWRGb3JDb250ZXh0LAorfSBmcm9tICcuL2J1ZmZlcl9zeW5jX3Rlc3QuanMnOworCisvLyBU
aGUgc3JjIHZhbHVlIGlzIHdoYXQgc3RvcmVzIGluIHRoZSBzcmMgYnVmZmVyIGJlZm9yZSBhbnkg
b3BlcmF0aW9uLgorY29uc3Qga1NyY1ZhbHVlID0gMDsKKy8vIFRoZSBvcCB2YWx1ZSBpcyB3aGF0
IHRoZSByZWFkL3dyaXRlIG9wZXJhdGlvbiB3cml0ZSBpbnRvIHRoZSB0YXJnZXQgYnVmZmVyLgor
Y29uc3Qga09wVmFsdWUgPSAxOworCitleHBvcnQgY29uc3QgZyA9IG1ha2VUZXN0R3JvdXAoQnVm
ZmVyU3luY1Rlc3QpOworCitnLnRlc3QoJ3J3JykKKyAgLmRlc2MoCisgICAgYAorICAgIFBlcmZv
cm0gYSAncmVhZCcgb3BlcmF0aW9ucyBvbiBhIGJ1ZmZlciwgZm9sbG93ZWQgYnkgYSAnd3JpdGUn
IG9wZXJhdGlvbi4KKyAgICBPcGVyYXRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgYSAnYm91bmRhcnkn
IChwYXNzLCBlbmNvZGVyLCBxdWV1ZS1vcCwgZXRjLikuCisgICAgVGVzdCB0aGF0IHRoZSByZXN1
bHRzIGFyZSBzeW5jaHJvbml6ZWQuCisgICAgVGhlIHJlYWQgc2hvdWxkIG5vdCBzZWUgdGhlIGNv
bnRlbnRzIHdyaXR0ZW4gYnkgdGhlIHN1YnNlcXVlbnQgd3JpdGUuYAorICApCisgIC5wYXJhbXMo
dSA9PgorICAgIHUgLy8KKyAgICAgIC5jb21iaW5lKCdib3VuZGFyeScsIGtPcGVyYXRpb25Cb3Vu
ZGFyaWVzKQorICAgICAgLmV4cGFuZCgnX2NvbnRleHQnLCBwID0+IGtCb3VuZGFyeUluZm9bcC5i
b3VuZGFyeV0uY29udGV4dHMpCisgICAgICAuZXhwYW5kV2l0aFBhcmFtcyhmdW5jdGlvbiogKHsg
X2NvbnRleHQgfSkgeworICAgICAgICBmb3IgKGNvbnN0IHJlYWRPcCBvZiBrQWxsUmVhZE9wcykg
eworICAgICAgICAgIGZvciAoY29uc3Qgd3JpdGVPcCBvZiBrQWxsV3JpdGVPcHMpIHsKKyAgICAg
ICAgICAgIGlmIChjaGVja09wc1ZhbGlkRm9yQ29udGV4dChbcmVhZE9wLCB3cml0ZU9wXSwgX2Nv
bnRleHQpKSB7CisgICAgICAgICAgICAgIHlpZWxkIHsKKyAgICAgICAgICAgICAgICByZWFkT3As
CisgICAgICAgICAgICAgICAgcmVhZENvbnRleHQ6IF9jb250ZXh0WzBdLAorICAgICAgICAgICAg
ICAgIHdyaXRlT3AsCisgICAgICAgICAgICAgICAgd3JpdGVDb250ZXh0OiBfY29udGV4dFsxXSwK
KyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgIH0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgcmVhZENvbnRl
eHQsIHJlYWRPcCwgd3JpdGVDb250ZXh0LCB3cml0ZU9wLCBib3VuZGFyeSB9ID0gdC5wYXJhbXM7
CisgICAgY29uc3QgaGVscGVyID0gbmV3IE9wZXJhdGlvbkNvbnRleHRIZWxwZXIodCk7CisKKyAg
ICBjb25zdCB7IHNyY0J1ZmZlciwgZHN0QnVmZmVyIH0gPSBhd2FpdCB0LmNyZWF0ZUJ1ZmZlcnNG
b3JSZWFkT3AocmVhZE9wLCBrU3JjVmFsdWUsIGtPcFZhbHVlKTsKKyAgICBhd2FpdCB0LmNyZWF0
ZUludGVybWVkaWF0ZUJ1ZmZlcnNBbmRUZXh0dXJlc0ZvcldyaXRlT3Aod3JpdGVPcCwgMCwga09w
VmFsdWUpOworCisgICAgLy8gVGhlIHJlYWQgb3Agd2lsbCByZWFkIGZyb20gc3JjIGJ1ZmZlciBh
bmQgd3JpdGUgdG8gZHN0IGJ1ZmZlciBiYXNlZCBvbiB3aGF0IGl0IHJlYWRzLgorICAgIC8vIFRo
ZSB3cml0ZSBvcCB3aWxsIHdyaXRlIHRoZSBnaXZlbiBvcCB2YWx1ZSBpbnRvIHNyYyBidWZmZXIg
YXMgd2VsbC4KKyAgICAvLyBUaGUgd3JpdGUgb3AgaGFwcGVucyBhZnRlciByZWFkIG9wLiBTbyB3
ZSBhcmUgZXhwZWN0aW5nIHRoZSBzcmMgdmFsdWUgdG8gYmUgaW4gdGhlIGRzdCBidWZmZXIuCisg
ICAgdC5lbmNvZGVSZWFkT3AoaGVscGVyLCByZWFkT3AsIHJlYWRDb250ZXh0LCBzcmNCdWZmZXIs
IGRzdEJ1ZmZlcik7CisgICAgaGVscGVyLmVuc3VyZUJvdW5kYXJ5KGJvdW5kYXJ5KTsKKyAgICB0
LmVuY29kZVdyaXRlT3AoaGVscGVyLCB3cml0ZU9wLCB3cml0ZUNvbnRleHQsIHNyY0J1ZmZlciwg
MCwga09wVmFsdWUpOworICAgIGhlbHBlci5lbnN1cmVTdWJtaXQoKTsKKyAgICAvLyBPbmx5IHZl
cmlmeSB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGRzdEJ1ZmZlcgorICAg
IHQudmVyaWZ5RGF0YShkc3RCdWZmZXIsIGtTcmNWYWx1ZSk7CisgIH0pOworCitnLnRlc3QoJ3dy
JykKKyAgLmRlc2MoCisgICAgYAorICAgIFBlcmZvcm0gYSAnd3JpdGUnIG9wZXJhdGlvbiBvbiBh
IGJ1ZmZlciwgZm9sbG93ZWQgYnkgYSAncmVhZCcgb3BlcmF0aW9uLgorICAgIE9wZXJhdGlvbnMg
YXJlIHNlcGFyYXRlZCBieSBhICdib3VuZGFyeScgKHBhc3MsIGVuY29kZXIsIHF1ZXVlLW9wLCBl
dGMuKS4KKyAgICBUZXN0IHRoYXQgdGhlIHJlc3VsdHMgYXJlIHN5bmNocm9uaXplZC4KKyAgICBU
aGUgcmVhZCBzaG91bGQgc2VlIGV4YWN0bHkgdGhlIGNvbnRlbnRzIHdyaXR0ZW4gYnkgdGhlIHBy
ZXZpb3VzIHdyaXRlLmAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1IC8vCisgICAgICAuY29t
YmluZSgnYm91bmRhcnknLCBrT3BlcmF0aW9uQm91bmRhcmllcykKKyAgICAgIC5leHBhbmQoJ19j
b250ZXh0JywgcCA9PiBrQm91bmRhcnlJbmZvW3AuYm91bmRhcnldLmNvbnRleHRzKQorICAgICAg
LmV4cGFuZFdpdGhQYXJhbXMoZnVuY3Rpb24qICh7IF9jb250ZXh0IH0pIHsKKyAgICAgICAgZm9y
IChjb25zdCByZWFkT3Agb2Yga0FsbFJlYWRPcHMpIHsKKyAgICAgICAgICBmb3IgKGNvbnN0IHdy
aXRlT3Agb2Yga0FsbFdyaXRlT3BzKSB7CisgICAgICAgICAgICBpZiAoY2hlY2tPcHNWYWxpZEZv
ckNvbnRleHQoW3JlYWRPcCwgd3JpdGVPcF0sIF9jb250ZXh0KSkgeworICAgICAgICAgICAgICB5
aWVsZCB7CisgICAgICAgICAgICAgICAgcmVhZE9wLAorICAgICAgICAgICAgICAgIHJlYWRDb250
ZXh0OiBfY29udGV4dFswXSwKKyAgICAgICAgICAgICAgICB3cml0ZU9wLAorICAgICAgICAgICAg
ICAgIHdyaXRlQ29udGV4dDogX2NvbnRleHRbMV0sCisgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9KQorICApCisgIC5mbihhc3lu
YyB0ID0+IHsKKyAgICBjb25zdCB7IHJlYWRDb250ZXh0LCByZWFkT3AsIHdyaXRlQ29udGV4dCwg
d3JpdGVPcCwgYm91bmRhcnkgfSA9IHQucGFyYW1zOworICAgIGNvbnN0IGhlbHBlciA9IG5ldyBP
cGVyYXRpb25Db250ZXh0SGVscGVyKHQpOworCisgICAgY29uc3QgeyBzcmNCdWZmZXIsIGRzdEJ1
ZmZlciB9ID0gYXdhaXQgdC5jcmVhdGVCdWZmZXJzRm9yUmVhZE9wKHJlYWRPcCwga1NyY1ZhbHVl
LCBrT3BWYWx1ZSk7CisgICAgYXdhaXQgdC5jcmVhdGVJbnRlcm1lZGlhdGVCdWZmZXJzQW5kVGV4
dHVyZXNGb3JXcml0ZU9wKHdyaXRlT3AsIDAsIGtPcFZhbHVlKTsKKworICAgIC8vIFRoZSB3cml0
ZSBvcCB3aWxsIHdyaXRlIHRoZSBnaXZlbiBvcCB2YWx1ZSBpbnRvIHNyYyBidWZmZXIuCisgICAg
Ly8gVGhlIHJlYWQgb3Agd2lsbCByZWFkIGZyb20gc3JjIGJ1ZmZlciBhbmQgd3JpdGUgdG8gZHN0
IGJ1ZmZlciBiYXNlZCBvbiB3aGF0IGl0IHJlYWRzLgorICAgIC8vIFRoZSB3cml0ZSBvcCBoYXBw
ZW5zIGJlZm9yZSByZWFkIG9wLiBTbyB3ZSBhcmUgZXhwZWN0aW5nIHRoZSBvcCB2YWx1ZSB0byBi
ZSBpbiB0aGUgZHN0IGJ1ZmZlci4KKyAgICB0LmVuY29kZVdyaXRlT3AoaGVscGVyLCB3cml0ZU9w
LCB3cml0ZUNvbnRleHQsIHNyY0J1ZmZlciwgMCwga09wVmFsdWUpOworICAgIGhlbHBlci5lbnN1
cmVCb3VuZGFyeShib3VuZGFyeSk7CisgICAgdC5lbmNvZGVSZWFkT3AoaGVscGVyLCByZWFkT3As
IHJlYWRDb250ZXh0LCBzcmNCdWZmZXIsIGRzdEJ1ZmZlcik7CisgICAgaGVscGVyLmVuc3VyZVN1
Ym1pdCgpOworICAgIC8vIE9ubHkgdmVyaWZ5IHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgZWxlbWVu
dCBvZiB0aGUgZHN0QnVmZmVyCisgICAgdC52ZXJpZnlEYXRhKGRzdEJ1ZmZlciwga09wVmFsdWUp
OworICB9KTsKKworZy50ZXN0KCd3dycpCisgIC5kZXNjKAorICAgIGAKKyAgICBQZXJmb3JtIGEg
J2ZpcnN0JyB3cml0ZSBvcGVyYXRpb24gb24gYSBidWZmZXIsIGZvbGxvd2VkIGJ5IGEgJ3NlY29u
ZCcgd3JpdGUgb3BlcmF0aW9uLgorICAgIE9wZXJhdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBhICdi
b3VuZGFyeScgKHBhc3MsIGVuY29kZXIsIHF1ZXVlLW9wLCBldGMuKS4KKyAgICBUZXN0IHRoYXQg
dGhlIHJlc3VsdHMgYXJlIHN5bmNocm9uaXplZC4KKyAgICBUaGUgc2Vjb25kIHdyaXRlIHNob3Vs
ZCBvdmVyd3JpdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaXJzdC5gCisgICkKKyAgLnBhcmFtcyh1
ID0+CisgICAgdSAvLworICAgICAgLmNvbWJpbmUoJ2JvdW5kYXJ5Jywga09wZXJhdGlvbkJvdW5k
YXJpZXMpCisgICAgICAuZXhwYW5kKCdfY29udGV4dCcsIHAgPT4ga0JvdW5kYXJ5SW5mb1twLmJv
dW5kYXJ5XS5jb250ZXh0cykKKyAgICAgIC5leHBhbmRXaXRoUGFyYW1zKGZ1bmN0aW9uKiAoeyBf
Y29udGV4dCB9KSB7CisgICAgICAgIGZvciAoY29uc3QgZmlyc3RXcml0ZU9wIG9mIGtBbGxXcml0
ZU9wcykgeworICAgICAgICAgIGZvciAoY29uc3Qgc2Vjb25kV3JpdGVPcCBvZiBrQWxsV3JpdGVP
cHMpIHsKKyAgICAgICAgICAgIGlmIChjaGVja09wc1ZhbGlkRm9yQ29udGV4dChbZmlyc3RXcml0
ZU9wLCBzZWNvbmRXcml0ZU9wXSwgX2NvbnRleHQpKSB7CisgICAgICAgICAgICAgIHlpZWxkIHsK
KyAgICAgICAgICAgICAgICB3cml0ZU9wczogW2ZpcnN0V3JpdGVPcCwgc2Vjb25kV3JpdGVPcF0s
CisgICAgICAgICAgICAgICAgY29udGV4dHM6IF9jb250ZXh0LAorICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSkKKyAgKQorICAu
Zm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyB3cml0ZU9wcywgY29udGV4dHMsIGJvdW5kYXJ5
IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCBoZWxwZXIgPSBuZXcgT3BlcmF0aW9uQ29udGV4dEhl
bHBlcih0KTsKKworICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHQuY3JlYXRlQnVmZmVyV2l0aFZh
bHVlKDApOworICAgIGF3YWl0IHQuY3JlYXRlSW50ZXJtZWRpYXRlQnVmZmVyc0FuZFRleHR1cmVz
Rm9yV3JpdGVPcCh3cml0ZU9wc1swXSwgMCwgMSk7CisgICAgYXdhaXQgdC5jcmVhdGVJbnRlcm1l
ZGlhdGVCdWZmZXJzQW5kVGV4dHVyZXNGb3JXcml0ZU9wKHdyaXRlT3BzWzFdLCAxLCAyKTsKKwor
ICAgIHQuZW5jb2RlV3JpdGVPcChoZWxwZXIsIHdyaXRlT3BzWzBdLCBjb250ZXh0c1swXSwgYnVm
ZmVyLCAwLCAxKTsKKyAgICBoZWxwZXIuZW5zdXJlQm91bmRhcnkoYm91bmRhcnkpOworICAgIHQu
ZW5jb2RlV3JpdGVPcChoZWxwZXIsIHdyaXRlT3BzWzFdLCBjb250ZXh0c1sxXSwgYnVmZmVyLCAx
LCAyKTsKKyAgICBoZWxwZXIuZW5zdXJlU3VibWl0KCk7CisgICAgdC52ZXJpZnlEYXRhKGJ1ZmZl
ciwgMik7CisgIH0pOworCisvLyBDYXNlcyB3aXRoIGxvb3NlIHJlbmRlciByZXN1bHQgZ3VhcmVu
dGVlcy4KKworZy50ZXN0KCd0d29fZHJhd3NfaW5fdGhlX3NhbWVfcmVuZGVyX3Bhc3MnKQorICAu
ZGVzYygKKyAgICBgVGVzdCB3cml0ZS1hZnRlci13cml0ZSBvcGVyYXRpb25zIGluIHRoZSBzYW1l
IHJlbmRlciBwYXNzLiBUaGUgZmlyc3Qgd3JpdGUgd2lsbCB3cml0ZSAxIGludG8KKyAgICBhIHN0
b3JhZ2UgYnVmZmVyLiBUaGUgc2Vjb25kIHdyaXRlIHdpbGwgd3JpdGUgMiBpbnRvIHRoZSBzYW1l
IGJ1ZmZlciBpbiB0aGUgc2FtZSBwYXNzLiBFeHBlY3RlZAorICAgIGRhdGEgaW4gYnVmZmVyIGlz
IGVpdGhlciAxIG9yIDIuIEl0IG1heSB1c2UgYnVuZGxlIGluIGVhY2ggZHJhdy5gCisgICkKKyAg
LnBhcmFtc1N1YmNhc2VzT25seSh1ID0+CisgICAgdSAvLworICAgICAgLmNvbWJpbmUoJ2ZpcnN0
RHJhd1VzZUJ1bmRsZScsIFtmYWxzZSwgdHJ1ZV0pCisgICAgICAuY29tYmluZSgnc2Vjb25kRHJh
d1VzZUJ1bmRsZScsIFtmYWxzZSwgdHJ1ZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHsgZmlyc3REcmF3VXNlQnVuZGxlLCBzZWNvbmREcmF3VXNlQnVuZGxlIH0gPSB0LnBh
cmFtczsKKyAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0LmNyZWF0ZUJ1ZmZlcldpdGhWYWx1ZSgw
KTsKKyAgICBjb25zdCBlbmNvZGVyID0gdC5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsK
KyAgICBjb25zdCBwYXNzRW5jb2RlciA9IHQuYmVnaW5TaW1wbGVSZW5kZXJQYXNzKGVuY29kZXIp
OworCisgICAgY29uc3QgdXNlQnVuZGxlID0gW2ZpcnN0RHJhd1VzZUJ1bmRsZSwgc2Vjb25kRHJh
d1VzZUJ1bmRsZV07CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyOyArK2kpIHsKKyAgICAgIGNv
bnN0IHJlbmRlckVuY29kZXIgPSB1c2VCdW5kbGVbaV0KKyAgICAgICAgPyB0LmRldmljZS5jcmVh
dGVSZW5kZXJCdW5kbGVFbmNvZGVyKHsKKyAgICAgICAgICAgIGNvbG9yRm9ybWF0czogWydyZ2Jh
OHVub3JtJ10sCisgICAgICAgICAgfSkKKyAgICAgICAgOiBwYXNzRW5jb2RlcjsKKyAgICAgIGNv
bnN0IHBpcGVsaW5lID0gdC5jcmVhdGVTdG9yYWdlV3JpdGVSZW5kZXJQaXBlbGluZShpICsgMSk7
CisgICAgICBjb25zdCBiaW5kR3JvdXAgPSB0LmNyZWF0ZUJpbmRHcm91cChwaXBlbGluZSwgYnVm
ZmVyKTsKKyAgICAgIHJlbmRlckVuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOworICAgICAg
cmVuZGVyRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKKyAgICAgIHJlbmRlckVu
Y29kZXIuZHJhdygxLCAxLCAwLCAwKTsKKyAgICAgIGlmICh1c2VCdW5kbGVbaV0pIHBhc3NFbmNv
ZGVyLmV4ZWN1dGVCdW5kbGVzKFtyZW5kZXJFbmNvZGVyLmZpbmlzaCgpXSk7CisgICAgfQorCisg
ICAgcGFzc0VuY29kZXIuZW5kKCk7CisgICAgdC5kZXZpY2UucXVldWUuc3VibWl0KFtlbmNvZGVy
LmZpbmlzaCgpXSk7CisgICAgdC52ZXJpZnlEYXRhVHdvVmFsaWRWYWx1ZXMoYnVmZmVyLCAxLCAy
KTsKKyAgfSk7CisKK2cudGVzdCgndHdvX2RyYXdzX2luX3RoZV9zYW1lX3JlbmRlcl9idW5kbGUn
KQorICAuZGVzYygKKyAgICBgVGVzdCB3cml0ZS1hZnRlci13cml0ZSBvcGVyYXRpb25zIGluIHRo
ZSBzYW1lIHJlbmRlciBidW5kbGUuIFRoZSBmaXJzdCB3cml0ZSB3aWxsIHdyaXRlIDEgaW50bwor
ICAgIGEgc3RvcmFnZSBidWZmZXIuIFRoZSBzZWNvbmQgd3JpdGUgd2lsbCB3cml0ZSAyIGludG8g
dGhlIHNhbWUgYnVmZmVyIGluIHRoZSBzYW1lIHBhc3MuIEV4cGVjdGVkCisgICAgZGF0YSBpbiBi
dWZmZXIgaXMgZWl0aGVyIDEgb3IgMi5gCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNv
bnN0IGJ1ZmZlciA9IGF3YWl0IHQuY3JlYXRlQnVmZmVyV2l0aFZhbHVlKDApOworICAgIGNvbnN0
IGVuY29kZXIgPSB0LmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNvbnN0IHBh
c3NFbmNvZGVyID0gdC5iZWdpblNpbXBsZVJlbmRlclBhc3MoZW5jb2Rlcik7CisgICAgY29uc3Qg
cmVuZGVyRW5jb2RlciA9IHQuZGV2aWNlLmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoeworICAg
ICAgY29sb3JGb3JtYXRzOiBbJ3JnYmE4dW5vcm0nXSwKKyAgICB9KTsKKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMjsgKytpKSB7CisgICAgICBjb25zdCBwaXBlbGluZSA9IHQuY3JlYXRlU3Rv
cmFnZVdyaXRlUmVuZGVyUGlwZWxpbmUoaSArIDEpOworICAgICAgY29uc3QgYmluZEdyb3VwID0g
dC5jcmVhdGVCaW5kR3JvdXAocGlwZWxpbmUsIGJ1ZmZlcik7CisgICAgICByZW5kZXJFbmNvZGVy
LnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKKyAgICAgIHJlbmRlckVuY29kZXIuc2V0QmluZEdyb3Vw
KDAsIGJpbmRHcm91cCk7CisgICAgICByZW5kZXJFbmNvZGVyLmRyYXcoMSwgMSwgMCwgMCk7Cisg
ICAgfQorCisgICAgcGFzc0VuY29kZXIuZXhlY3V0ZUJ1bmRsZXMoW3JlbmRlckVuY29kZXIuZmlu
aXNoKCldKTsKKyAgICBwYXNzRW5jb2Rlci5lbmQoKTsKKyAgICB0LmRldmljZS5xdWV1ZS5zdWJt
aXQoW2VuY29kZXIuZmluaXNoKCldKTsKKyAgICB0LnZlcmlmeURhdGFUd29WYWxpZFZhbHVlcyhi
dWZmZXIsIDEsIDIpOworICB9KTsKKworZy50ZXN0KCd0d29fZGlzcGF0Y2hlc19pbl90aGVfc2Ft
ZV9jb21wdXRlX3Bhc3MnKQorICAuZGVzYygKKyAgICBgVGVzdCB3cml0ZS1hZnRlci13cml0ZSBv
cGVyYXRpb25zIGluIHRoZSBzYW1lIGNvbXB1dGUgcGFzcy4gVGhlIGZpcnN0IHdyaXRlIHdpbGwg
d3JpdGUgMSBpbnRvCisgICAgYSBzdG9yYWdlIGJ1ZmZlci4gVGhlIHNlY29uZCB3cml0ZSB3aWxs
IHdyaXRlIDIgaW50byB0aGUgc2FtZSBidWZmZXIgaW4gdGhlIHNhbWUgcGFzcy4gRXhwZWN0ZWQK
KyAgICBkYXRhIGluIGJ1ZmZlciBpcyAyLmAKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAg
Y29uc3QgYnVmZmVyID0gYXdhaXQgdC5jcmVhdGVCdWZmZXJXaXRoVmFsdWUoMCk7CisgICAgY29u
c3QgZW5jb2RlciA9IHQuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgY29uc3Qg
cGFzcyA9IGVuY29kZXIuYmVnaW5Db21wdXRlUGFzcygpOworCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAyOyArK2kpIHsKKyAgICAgIGNvbnN0IHBpcGVsaW5lID0gdC5jcmVhdGVTdG9yYWdlV3Jp
dGVDb21wdXRlUGlwZWxpbmUoaSArIDEpOworICAgICAgY29uc3QgYmluZEdyb3VwID0gdC5jcmVh
dGVCaW5kR3JvdXAocGlwZWxpbmUsIGJ1ZmZlcik7CisgICAgICBwYXNzLnNldFBpcGVsaW5lKHBp
cGVsaW5lKTsKKyAgICAgIHBhc3Muc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cCk7CisgICAgICBw
YXNzLmRpc3BhdGNoKDEpOworICAgIH0KKworICAgIHBhc3MuZW5kKCk7CisgICAgdC5kZXZpY2Uu
cXVldWUuc3VibWl0KFtlbmNvZGVyLmZpbmlzaCgpXSk7CisgICAgdC52ZXJpZnlEYXRhKGJ1ZmZl
ciwgMik7CisgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvb3BlcmF0aW9uX2NvbnRleHRfaGVscGVy
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24v
bWVtb3J5X3N5bmMvb3BlcmF0aW9uX2NvbnRleHRfaGVscGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWJlM2UwMWE2MjM2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5
X3N5bmMvb3BlcmF0aW9uX2NvbnRleHRfaGVscGVyLmpzCkBAIC0wLDAgKzEsMzI2IEBACisvKioK
KyAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9UIEVESVQuIFNvdXJjZTogaHR0cHM6Ly9naXRodWIu
Y29tL2dwdXdlYi9jdHMKKyAqKi8gaW1wb3J0IHsgYXNzZXJ0LCB1bnJlYWNoYWJsZSB9IGZyb20g
Jy4uLy4uLy4uLy4uL2NvbW1vbi91dGlsL3V0aWwuanMnOworCisvKioKKyAqIEJvdW5kYXJ5IGJl
dHdlZW4gdGhlIGZpcnN0IG9wZXJhdGlvbiwgYW5kIHRoZSBzZWNvbmQgb3BlcmF0aW9uLgorICov
CitleHBvcnQgY29uc3Qga09wZXJhdGlvbkJvdW5kYXJpZXMgPSBbCisgICdxdWV1ZS1vcCcsIC8v
IE9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBpbiBkaWZmZXJlbnQgcXVldWUgb3BlcmF0aW9ucyAo
c3VibWl0LCB3cml0ZVRleHR1cmUpLgorICAnY29tbWFuZC1idWZmZXInLCAvLyBPcGVyYXRpb25z
IGFyZSBpbiBkaWZmZXJlbnQgY29tbWFuZCBidWZmZXJzLgorICAncGFzcycsIC8vIE9wZXJhdGlv
bnMgYXJlIGluIGRpZmZlcmVudCBwYXNzZXMuCisgICdleGVjdXRlLWJ1bmRsZXMnLCAvLyBPcGVy
YXRpb25zIGFyZSBpbiBkaWZmZXJlbnQgZXhlY3V0ZUJ1bmRsZXMoLi4uKSBjYWxscworICAncmVu
ZGVyLWJ1bmRsZScsIC8vIE9wZXJhdGlvbnMgYXJlIGluIGRpZmZlcmVudCByZW5kZXIgYnVuZGxl
cy4KKyAgJ2Rpc3BhdGNoJywgLy8gT3BlcmF0aW9ucyBhcmUgaW4gZGlmZmVyZW50IGRpc3BhdGNo
ZXMuCisgICdkcmF3JywgLy8gT3BlcmF0aW9ucyBhcmUgaW4gZGlmZmVyZW50IGRyYXdzLgorXTsK
KworLyoqCisgKiBDb250ZXh0IGEgcGFydGljdWxhciBvcGVyYXRpb24gaXMgcGVybWl0dGVkIGlu
LgorICogVGhlc2UgY29udGV4dHMgc2hvdWxkIGJlIHNvcnRlZCBzdWNoIHRoYXQgdGhlIGZpcnN0
IGlzIHRoZSBtb3N0IHRvcC1sZXZlbAorICogY29udGV4dCwgYW5kIHRoZSBsYXN0IGlzIG1vc3Qg
bmVzdGVkIChpbnNpZGUgYSByZW5kZXIgYnVuZGxlLCBpbiBhIHJlbmRlciBwYXNzLCAuLi4pLgor
ICovCitleHBvcnQgY29uc3Qga09wZXJhdGlvbkNvbnRleHRzID0gWworICAncXVldWUnLCAvLyBP
cGVyYXRpb24gb2NjdXJzIG9uIHRoZSBHUFVRdWV1ZSBvYmplY3QKKyAgJ2NvbW1hbmQtZW5jb2Rl
cicsIC8vIE9wZXJhdGlvbiBtYXkgYmUgZW5jb2RlZCBpbiBhIEdQVUNvbW1hbmRFbmNvZGVyLgor
ICAnY29tcHV0ZS1wYXNzLWVuY29kZXInLCAvLyBPcGVyYXRpb24gbWF5IGJlIGVuY29kZWQgaW4g
YSBHUFVDb21wdXRlUGFzc0VuY29kZXIuCisgICdyZW5kZXItcGFzcy1lbmNvZGVyJywgLy8gT3Bl
cmF0aW9uIG1heSBiZSBlbmNvZGVkIGluIGEgR1BVUmVuZGVyUGFzc0VuY29kZXIuCisgICdyZW5k
ZXItYnVuZGxlLWVuY29kZXInLCAvLyBPcGVyYXRpb24gbWF5IGJlIGVuY29kZWQgaW4gYSBHUFVS
ZW5kZXJCdW5kbGVFbmNvZGVyLgorXTsKKworZnVuY3Rpb24gY29tYmluZUNvbnRleHRzKGFzLCBi
cykgeworICBjb25zdCByZXN1bHQgPSBbXTsKKyAgZm9yIChjb25zdCBhIG9mIGFzKSB7CisgICAg
Zm9yIChjb25zdCBiIG9mIGJzKSB7CisgICAgICByZXN1bHQucHVzaChbYSwgYl0pOworICAgIH0K
KyAgfQorICByZXR1cm4gcmVzdWx0OworfQorCitjb25zdCBxdWV1ZUNvbnRleHRzID0gY29tYmlu
ZUNvbnRleHRzKGtPcGVyYXRpb25Db250ZXh0cywga09wZXJhdGlvbkNvbnRleHRzKTsKK2NvbnN0
IGNvbW1hbmRCdWZmZXJDb250ZXh0cyA9IGNvbWJpbmVDb250ZXh0cygKKyAga09wZXJhdGlvbkNv
bnRleHRzLmZpbHRlcihjID0+IGMgIT09ICdxdWV1ZScpLAorICBrT3BlcmF0aW9uQ29udGV4dHMu
ZmlsdGVyKGMgPT4gYyAhPT0gJ3F1ZXVlJykKKyk7CisKKy8qKgorICogTWFwcGluZyBvZiBPcGVy
YXRpb25Cb3VuZGFyeSA9PiB0byBhIHNldCBvZiBPcGVyYXRpb25Db250ZXh0IHBhaXJzLgorICog
VGhlIGJvdW5kYXJ5IGlzIGNhcGFibGUgb2Ygc2VwYXJhdGluZyBvcGVyYXRpb25zIGluIHRob3Nl
IHR3byBjb250ZXh0cy4KKyAqLworZXhwb3J0IGNvbnN0IGtCb3VuZGFyeUluZm8gPSB7CisgICdx
dWV1ZS1vcCc6IHsKKyAgICBjb250ZXh0czogcXVldWVDb250ZXh0cywKKyAgfSwKKworICAnY29t
bWFuZC1idWZmZXInOiB7CisgICAgY29udGV4dHM6IGNvbW1hbmRCdWZmZXJDb250ZXh0cywKKyAg
fSwKKworICBwYXNzOiB7CisgICAgY29udGV4dHM6IFsKKyAgICAgIFsnY29tcHV0ZS1wYXNzLWVu
Y29kZXInLCAnY29tcHV0ZS1wYXNzLWVuY29kZXInXSwKKyAgICAgIFsnY29tcHV0ZS1wYXNzLWVu
Y29kZXInLCAncmVuZGVyLXBhc3MtZW5jb2RlciddLAorICAgICAgWydyZW5kZXItcGFzcy1lbmNv
ZGVyJywgJ2NvbXB1dGUtcGFzcy1lbmNvZGVyJ10sCisgICAgICBbJ3JlbmRlci1wYXNzLWVuY29k
ZXInLCAncmVuZGVyLXBhc3MtZW5jb2RlciddLAorICAgICAgWydyZW5kZXItYnVuZGxlLWVuY29k
ZXInLCAncmVuZGVyLXBhc3MtZW5jb2RlciddLAorICAgICAgWydyZW5kZXItcGFzcy1lbmNvZGVy
JywgJ3JlbmRlci1idW5kbGUtZW5jb2RlciddLAorICAgICAgWydyZW5kZXItYnVuZGxlLWVuY29k
ZXInLCAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJ10sCisgICAgXSwKKyAgfSwKKworICAnZXhlY3V0
ZS1idW5kbGVzJzogeworICAgIGNvbnRleHRzOiBbWydyZW5kZXItYnVuZGxlLWVuY29kZXInLCAn
cmVuZGVyLWJ1bmRsZS1lbmNvZGVyJ11dLAorICB9LAorCisgICdyZW5kZXItYnVuZGxlJzogewor
ICAgIGNvbnRleHRzOiBbCisgICAgICBbJ3JlbmRlci1idW5kbGUtZW5jb2RlcicsICdyZW5kZXIt
cGFzcy1lbmNvZGVyJ10sCisgICAgICBbJ3JlbmRlci1wYXNzLWVuY29kZXInLCAncmVuZGVyLWJ1
bmRsZS1lbmNvZGVyJ10sCisgICAgICBbJ3JlbmRlci1idW5kbGUtZW5jb2RlcicsICdyZW5kZXIt
YnVuZGxlLWVuY29kZXInXSwKKyAgICBdLAorICB9LAorCisgIGRpc3BhdGNoOiB7CisgICAgY29u
dGV4dHM6IFtbJ2NvbXB1dGUtcGFzcy1lbmNvZGVyJywgJ2NvbXB1dGUtcGFzcy1lbmNvZGVyJ11d
LAorICB9LAorCisgIGRyYXc6IHsKKyAgICBjb250ZXh0czogWworICAgICAgWydyZW5kZXItcGFz
cy1lbmNvZGVyJywgJ3JlbmRlci1wYXNzLWVuY29kZXInXSwKKyAgICAgIFsncmVuZGVyLWJ1bmRs
ZS1lbmNvZGVyJywgJ3JlbmRlci1wYXNzLWVuY29kZXInXSwKKyAgICAgIFsncmVuZGVyLXBhc3Mt
ZW5jb2RlcicsICdyZW5kZXItYnVuZGxlLWVuY29kZXInXSwKKyAgICBdLAorICB9LAorfTsKKwor
ZXhwb3J0IGNsYXNzIE9wZXJhdGlvbkNvbnRleHRIZWxwZXIgeworICAvLyBXZSBzdGFydCBhdCB0
aGUgcXVldWUgY29udGV4dCB3aGljaCBpcyB0b3AtbGV2ZWwuCisgIGN1cnJlbnRDb250ZXh0ID0g
J3F1ZXVlJzsKKworICAvLyBTZXQgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC4KKworICBj
b21tYW5kQnVmZmVycyA9IFtdOworICByZW5kZXJCdW5kbGVzID0gW107CisKKyAga1RleHR1cmVT
aXplID0gWzQsIDRdOworICBrVGV4dHVyZUZvcm1hdCA9ICdyZ2JhOHVub3JtJzsKKworICBjb25z
dHJ1Y3Rvcih0KSB7CisgICAgdGhpcy50ID0gdDsKKyAgICB0aGlzLmRldmljZSA9IHQuZGV2aWNl
OworICAgIHRoaXMucXVldWUgPSB0LmRldmljZS5xdWV1ZTsKKyAgfQorCisgIC8vIEVuc3VyZSB0
aGF0IGFsbCBlbmNvZGVkIGNvbW1hbmRzIGFyZSBmaW5pc2hlZCBhbmQgc3VibWl0dGVkLgorICBl
bnN1cmVTdWJtaXQoKSB7CisgICAgdGhpcy5lbnN1cmVDb250ZXh0KCdxdWV1ZScpOworICAgIHRo
aXMuZmx1c2hDb21tYW5kQnVmZmVycygpOworICB9CisKKyAgcG9wQ29udGV4dCgpIHsKKyAgICBz
d2l0Y2ggKHRoaXMuY3VycmVudENvbnRleHQpIHsKKyAgICAgIGNhc2UgJ3F1ZXVlJzoKKyAgICAg
ICAgdW5yZWFjaGFibGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICdjb21tYW5kLWVu
Y29kZXInOiB7CisgICAgICAgIGFzc2VydCh0aGlzLmNvbW1hbmRFbmNvZGVyICE9PSB1bmRlZmlu
ZWQpOworICAgICAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gdGhpcy5jb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKKyAgICAgICAgdGhpcy5jb21tYW5kRW5jb2RlciA9IHVuZGVmaW5lZDsKKyAgICAg
ICAgdGhpcy5jdXJyZW50Q29udGV4dCA9ICdxdWV1ZSc7CisgICAgICAgIHJldHVybiBjb21tYW5k
QnVmZmVyOworICAgICAgfQorICAgICAgY2FzZSAnY29tcHV0ZS1wYXNzLWVuY29kZXInOgorICAg
ICAgICBhc3NlcnQodGhpcy5jb21wdXRlUGFzc0VuY29kZXIgIT09IHVuZGVmaW5lZCk7CisgICAg
ICAgIHRoaXMuY29tcHV0ZVBhc3NFbmNvZGVyLmVuZCgpOworICAgICAgICB0aGlzLmNvbXB1dGVQ
YXNzRW5jb2RlciA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5jdXJyZW50Q29udGV4dCA9ICdj
b21tYW5kLWVuY29kZXInOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3JlbmRlci1wYXNz
LWVuY29kZXInOgorICAgICAgICBhc3NlcnQodGhpcy5yZW5kZXJQYXNzRW5jb2RlciAhPT0gdW5k
ZWZpbmVkKTsKKyAgICAgICAgdGhpcy5yZW5kZXJQYXNzRW5jb2Rlci5lbmQoKTsKKyAgICAgICAg
dGhpcy5yZW5kZXJQYXNzRW5jb2RlciA9IHVuZGVmaW5lZDsKKyAgICAgICAgdGhpcy5jdXJyZW50
Q29udGV4dCA9ICdjb21tYW5kLWVuY29kZXInOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
J3JlbmRlci1idW5kbGUtZW5jb2Rlcic6IHsKKyAgICAgICAgYXNzZXJ0KHRoaXMucmVuZGVyQnVu
ZGxlRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKKyAgICAgICAgY29uc3QgcmVuZGVyQnVuZGxlID0g
dGhpcy5yZW5kZXJCdW5kbGVFbmNvZGVyLmZpbmlzaCgpOworICAgICAgICB0aGlzLnJlbmRlckJ1
bmRsZUVuY29kZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIHRoaXMuY3VycmVudENvbnRleHQgPSAn
cmVuZGVyLXBhc3MtZW5jb2Rlcic7CisgICAgICAgIHJldHVybiByZW5kZXJCdW5kbGU7CisgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGw7CisgIH0KKworICBtYWtlRHVtbXlBdHRhY2ht
ZW50KCkgeworICAgIGNvbnN0IHRleHR1cmUgPSB0aGlzLnQudHJhY2tGb3JDbGVhbnVwKAorICAg
ICAgdGhpcy5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICAgIGZvcm1hdDogdGhpcy5rVGV4
dHVyZUZvcm1hdCwKKyAgICAgICAgc2l6ZTogdGhpcy5rVGV4dHVyZVNpemUsCisgICAgICAgIHVz
YWdlOiBHUFVUZXh0dXJlVXNhZ2UuUkVOREVSX0FUVEFDSE1FTlQsCisgICAgICB9KQorICAgICk7
CisKKyAgICByZXR1cm4geworICAgICAgdmlldzogdGV4dHVyZS5jcmVhdGVWaWV3KCksCisgICAg
ICBsb2FkT3A6ICdsb2FkJywKKyAgICAgIHN0b3JlT3A6ICdzdG9yZScsCisgICAgfTsKKyAgfQor
CisgIGVuc3VyZUNvbnRleHQoY29udGV4dCkgeworICAgIC8vIEZpbmQgdGhlIGNvbW1vbiBhbmNl
c3Rvci4gU28gd2UgY2FuIHRyYW5zaXRpb24gZnJvbSBjdXJyZW50Q29udGV4dCAtPiBjb250ZXh0
LgorICAgIGNvbnN0IGFuY2VzdG9yQ29udGV4dCA9CisgICAgICBrT3BlcmF0aW9uQ29udGV4dHNb
CisgICAgICAgIE1hdGgubWluKAorICAgICAgICAgIGtPcGVyYXRpb25Db250ZXh0cy5pbmRleE9m
KGNvbnRleHQpLAorICAgICAgICAgIGtPcGVyYXRpb25Db250ZXh0cy5pbmRleE9mKHRoaXMuY3Vy
cmVudENvbnRleHQpCisgICAgICAgICkKKyAgICAgIF07CisKKyAgICAvLyBQb3AgdGhlIGNvbnRl
eHQgdW50aWwgd2UncmUgYXQgdGhlIGNvbW1vbiBhbmNlc3Rvci4KKyAgICB3aGlsZSAodGhpcy5j
dXJyZW50Q29udGV4dCAhPT0gYW5jZXN0b3JDb250ZXh0KSB7CisgICAgICAvLyBBYm91dCB0byBw
b3AgdGhlIHJlbmRlciBwYXNzIGVuY29kZXIuIEV4ZWN1dGUgYW55IG91dHN0YW5kaW5nIHJlbmRl
ciBidW5kbGVzLgorICAgICAgaWYgKHRoaXMuY3VycmVudENvbnRleHQgPT09ICdyZW5kZXItcGFz
cy1lbmNvZGVyJykgeworICAgICAgICB0aGlzLmZsdXNoUmVuZGVyQnVuZGxlcygpOworICAgICAg
fQorCisgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnBvcENvbnRleHQoKTsKKyAgICAgIGlmIChy
ZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEdQVVJlbmRlckJ1bmRsZSkg
eworICAgICAgICAgIHRoaXMucmVuZGVyQnVuZGxlcy5wdXNoKHJlc3VsdCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgdGhpcy5jb21tYW5kQnVmZmVycy5wdXNoKHJlc3VsdCk7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodGhpcy5jdXJyZW50Q29udGV4dCA9PT0g
Y29udGV4dCkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoY29udGV4dCkg
eworICAgICAgY2FzZSAncXVldWUnOgorICAgICAgICB1bnJlYWNoYWJsZSgpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgJ2NvbW1hbmQtZW5jb2Rlcic6CisgICAgICAgIGFzc2VydCh0aGlz
LmN1cnJlbnRDb250ZXh0ID09PSAncXVldWUnKTsKKyAgICAgICAgdGhpcy5jb21tYW5kRW5jb2Rl
ciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSAnY29tcHV0ZS1wYXNzLWVuY29kZXInOgorICAgICAgICBzd2l0Y2ggKHRoaXMu
Y3VycmVudENvbnRleHQpIHsKKyAgICAgICAgICBjYXNlICdxdWV1ZSc6CisgICAgICAgICAgICB0
aGlzLmNvbW1hbmRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsK
KyAgICAgICAgICAvLyBmYWxsdGhyb3VnaAorICAgICAgICAgIGNhc2UgJ2NvbW1hbmQtZW5jb2Rl
cic6CisgICAgICAgICAgICBhc3NlcnQodGhpcy5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVk
KTsKKyAgICAgICAgICAgIHRoaXMuY29tcHV0ZVBhc3NFbmNvZGVyID0gdGhpcy5jb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBj
YXNlICdjb21wdXRlLXBhc3MtZW5jb2Rlcic6CisgICAgICAgICAgY2FzZSAncmVuZGVyLWJ1bmRs
ZS1lbmNvZGVyJzoKKyAgICAgICAgICBjYXNlICdyZW5kZXItcGFzcy1lbmNvZGVyJzoKKyAgICAg
ICAgICAgIHVucmVhY2hhYmxlKCk7CisgICAgICAgIH0KKworICAgICAgICBicmVhazsKKyAgICAg
IGNhc2UgJ3JlbmRlci1wYXNzLWVuY29kZXInOgorICAgICAgICBzd2l0Y2ggKHRoaXMuY3VycmVu
dENvbnRleHQpIHsKKyAgICAgICAgICBjYXNlICdxdWV1ZSc6CisgICAgICAgICAgICB0aGlzLmNv
bW1hbmRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICAg
ICAgICAvLyBmYWxsdGhyb3VnaAorICAgICAgICAgIGNhc2UgJ2NvbW1hbmQtZW5jb2Rlcic6Cisg
ICAgICAgICAgICBhc3NlcnQodGhpcy5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKKyAg
ICAgICAgICAgIHRoaXMucmVuZGVyUGFzc0VuY29kZXIgPSB0aGlzLmNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyh7CisgICAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFt0aGlzLm1h
a2VEdW1teUF0dGFjaG1lbnQoKV0sCisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgY2FzZSAncmVuZGVyLXBhc3MtZW5jb2Rlcic6CisgICAgICAgICAgY2Fz
ZSAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJzoKKyAgICAgICAgICBjYXNlICdjb21wdXRlLXBhc3Mt
ZW5jb2Rlcic6CisgICAgICAgICAgICB1bnJlYWNoYWJsZSgpOworICAgICAgICB9CisKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICdyZW5kZXItYnVuZGxlLWVuY29kZXInOgorICAgICAgICBz
d2l0Y2ggKHRoaXMuY3VycmVudENvbnRleHQpIHsKKyAgICAgICAgICBjYXNlICdxdWV1ZSc6Cisg
ICAgICAgICAgICB0aGlzLmNvbW1hbmRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsKKyAgICAgICAgICAvLyBmYWxsdGhyb3VnaAorICAgICAgICAgIGNhc2UgJ2Nv
bW1hbmQtZW5jb2Rlcic6CisgICAgICAgICAgICBhc3NlcnQodGhpcy5jb21tYW5kRW5jb2RlciAh
PT0gdW5kZWZpbmVkKTsKKyAgICAgICAgICAgIHRoaXMucmVuZGVyUGFzc0VuY29kZXIgPSB0aGlz
LmNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7CisgICAgICAgICAgICAgIGNvbG9yQXR0
YWNobWVudHM6IFt0aGlzLm1ha2VEdW1teUF0dGFjaG1lbnQoKV0sCisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCisgICAgICAgICAgY2FzZSAncmVuZGVyLXBhc3Mt
ZW5jb2Rlcic6CisgICAgICAgICAgICB0aGlzLnJlbmRlckJ1bmRsZUVuY29kZXIgPSB0aGlzLmRl
dmljZS5jcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKHsKKyAgICAgICAgICAgICAgY29sb3JGb3Jt
YXRzOiBbdGhpcy5rVGV4dHVyZUZvcm1hdF0sCisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJzoKKyAgICAg
ICAgICBjYXNlICdjb21wdXRlLXBhc3MtZW5jb2Rlcic6CisgICAgICAgICAgICB1bnJlYWNoYWJs
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdGhpcy5jdXJy
ZW50Q29udGV4dCA9IGNvbnRleHQ7CisgIH0KKworICBmbHVzaFJlbmRlckJ1bmRsZXMoKSB7Cisg
ICAgYXNzZXJ0KHRoaXMucmVuZGVyUGFzc0VuY29kZXIgIT09IHVuZGVmaW5lZCk7CisgICAgaWYg
KHRoaXMucmVuZGVyQnVuZGxlcy5sZW5ndGgpIHsKKyAgICAgIHRoaXMucmVuZGVyUGFzc0VuY29k
ZXIuZXhlY3V0ZUJ1bmRsZXModGhpcy5yZW5kZXJCdW5kbGVzKTsKKyAgICAgIHRoaXMucmVuZGVy
QnVuZGxlcyA9IFtdOworICAgIH0KKyAgfQorCisgIGZsdXNoQ29tbWFuZEJ1ZmZlcnMoKSB7Cisg
ICAgaWYgKHRoaXMuY29tbWFuZEJ1ZmZlcnMubGVuZ3RoKSB7CisgICAgICB0aGlzLnF1ZXVlLnN1
Ym1pdCh0aGlzLmNvbW1hbmRCdWZmZXJzKTsKKyAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnMgPSBb
XTsKKyAgICB9CisgIH0KKworICBlbnN1cmVCb3VuZGFyeShib3VuZGFyeSkgeworICAgIHN3aXRj
aCAoYm91bmRhcnkpIHsKKyAgICAgIGNhc2UgJ2NvbW1hbmQtYnVmZmVyJzoKKyAgICAgICAgdGhp
cy5lbnN1cmVDb250ZXh0KCdxdWV1ZScpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3F1
ZXVlLW9wJzoKKyAgICAgICAgdGhpcy5lbnN1cmVDb250ZXh0KCdxdWV1ZScpOworICAgICAgICAv
LyBTdWJtaXQgYW55IEdQVUNvbW1hbmRCdWZmZXJzIHNvIHRoZSBuZXh0IG9uZSBpcyBpbiBhIHNl
cGFyYXRlIHN1Ym1pdC4KKyAgICAgICAgdGhpcy5mbHVzaENvbW1hbmRCdWZmZXJzKCk7CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSAnZGlzcGF0Y2gnOgorICAgICAgICAvLyBOb3RoaW5nIHRv
IGRvIHRvIHNlcGFyYXRlIGRpc3BhdGNoZXMuCisgICAgICAgIGFzc2VydCh0aGlzLmN1cnJlbnRD
b250ZXh0ID09PSAnY29tcHV0ZS1wYXNzLWVuY29kZXInKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlICdkcmF3JzoKKyAgICAgICAgLy8gTm90aGluZyB0byBkbyB0byBzZXBhcmF0ZSBkcmF3
cy4KKyAgICAgICAgYXNzZXJ0KAorICAgICAgICAgIHRoaXMuY3VycmVudENvbnRleHQgPT09ICdy
ZW5kZXItcGFzcy1lbmNvZGVyJyB8fAorICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29udGV4dCA9
PT0gJ3JlbmRlci1idW5kbGUtZW5jb2RlcicKKyAgICAgICAgKTsKKworICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgJ3Bhc3MnOgorICAgICAgICB0aGlzLmVuc3VyZUNvbnRleHQoJ2NvbW1hbmQt
ZW5jb2RlcicpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3JlbmRlci1idW5kbGUnOgor
ICAgICAgICB0aGlzLmVuc3VyZUNvbnRleHQoJ3JlbmRlci1wYXNzLWVuY29kZXInKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlICdleGVjdXRlLWJ1bmRsZXMnOgorICAgICAgICB0aGlzLmVu
c3VyZUNvbnRleHQoJ3JlbmRlci1wYXNzLWVuY29kZXInKTsKKyAgICAgICAgLy8gRXhlY3V0ZSBh
bnkgR1BVUmVuZGVyQnVuZGxlcyBzbyB0aGUgbmV4dCBvbmUgaXMgaW4gYSBzZXBhcmF0ZSBleGVj
dXRlQnVuZGxlcy4KKyAgICAgICAgdGhpcy5mbHVzaFJlbmRlckJ1bmRsZXMoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy90ZXh0dXJlL3NhbWVfc3Vi
cmVzb3VyY2Uuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL3RleHR1cmUvc2FtZV9zdWJyZXNvdXJjZS5zcGVjLmpz
CmluZGV4IDBlZjEyNTQyODk1Ni4uMzE5YmM1M2E5ZGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy90ZXh0
dXJlL3NhbWVfc3VicmVzb3VyY2Uuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy90ZXh0dXJlL3NhbWVfc3Vi
cmVzb3VyY2Uuc3BlYy5qcwpAQCAtMTQsMjIgKzE0LDI0IEBAIGltcG9ydCB7IEdQVVRlc3QgfSBm
cm9tICcuLi8uLi8uLi8uLi9ncHVfdGVzdC5qcyc7CiBpbXBvcnQgeyBhbGlnbiB9IGZyb20gJy4u
Ly4uLy4uLy4uL3V0aWwvbWF0aC5qcyc7CiBpbXBvcnQgeyBnZXRUZXh0dXJlQ29weUxheW91dCB9
IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdGV4dHVyZS9sYXlvdXQuanMnOwogaW1wb3J0IHsga1Rl
eGVsUmVwcmVzZW50YXRpb25JbmZvIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC90ZXh0dXJlL3Rl
eGVsX2RhdGEuanMnOwotCiBpbXBvcnQgewogICBrT3BlcmF0aW9uQm91bmRhcmllcywKICAga0Jv
dW5kYXJ5SW5mbywKKyAgT3BlcmF0aW9uQ29udGV4dEhlbHBlciwKK30gZnJvbSAnLi4vb3BlcmF0
aW9uX2NvbnRleHRfaGVscGVyLmpzJzsKKworaW1wb3J0IHsKICAga0FsbFJlYWRPcHMsCiAgIGtB
bGxXcml0ZU9wcywKICAgY2hlY2tPcHNWYWxpZEZvckNvbnRleHQsCiAgIGtPcEluZm8sCi0gIGtP
cGVyYXRpb25Db250ZXh0cywKIH0gZnJvbSAnLi90ZXh0dXJlX3N5bmNfdGVzdC5qcyc7CiAKIGV4
cG9ydCBjb25zdCBnID0gbWFrZVRlc3RHcm91cChHUFVUZXN0KTsKIAogY29uc3QgZnVsbHNjcmVl
blF1YWRXR1NMID0gYAogICBzdHJ1Y3QgVmVydGV4T3V0cHV0IHsKLSAgICBAYnVpbHRpbihwb3Np
dGlvbikgUG9zaXRpb24gOiB2ZWM0PGYzMj47CisgICAgQGJ1aWx0aW4ocG9zaXRpb24pIFBvc2l0
aW9uIDogdmVjNDxmMzI+CiAgIH07CiAKICAgQHN0YWdlKHZlcnRleCkgZm4gdmVydF9tYWluKEBi
dWlsdGluKHZlcnRleF9pbmRleCkgVmVydGV4SW5kZXggOiB1MzIpIC0+IFZlcnRleE91dHB1dCB7
CkBAIC00NywyMiArNDksMTIgQEAgY29uc3QgZnVsbHNjcmVlblF1YWRXR1NMID0gYAogICB9CiBg
OwogCi1jbGFzcyBUZXh0dXJlU3luY1Rlc3RIZWxwZXIgewotICAvLyBXZSBzdGFydCBhdCB0aGUg
cXVldWUgY29udGV4dCB3aGljaCBpcyB0b3AtbGV2ZWwuCi0gIGN1cnJlbnRDb250ZXh0ID0gJ3F1
ZXVlJzsKLQotICAvLyBTZXQgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29udGV4dC4KLQotICBjb21t
YW5kQnVmZmVycyA9IFtdOwotICByZW5kZXJCdW5kbGVzID0gW107Ci0KK2NsYXNzIFRleHR1cmVT
eW5jVGVzdEhlbHBlciBleHRlbmRzIE9wZXJhdGlvbkNvbnRleHRIZWxwZXIgewogICBrVGV4dHVy
ZVNpemUgPSBbNCwgNF07CiAgIGtUZXh0dXJlRm9ybWF0ID0gJ3JnYmE4dW5vcm0nOwogCiAgIGNv
bnN0cnVjdG9yKHQsIHRleHR1cmVDcmVhdGlvblBhcmFtcykgewotICAgIHRoaXMudCA9IHQ7Ci0g
ICAgdGhpcy5kZXZpY2UgPSB0LmRldmljZTsKLSAgICB0aGlzLnF1ZXVlID0gdC5kZXZpY2UucXVl
dWU7CisgICAgc3VwZXIodCk7CiAgICAgdGhpcy50ZXh0dXJlID0gdC50cmFja0ZvckNsZWFudXAo
CiAgICAgICB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKICAgICAgICAgc2l6ZTogdGhpcy5rVGV4
dHVyZVNpemUsCkBAIC01NzAsMjE4ICs1NjIsNiBAQCBjbGFzcyBUZXh0dXJlU3luY1Rlc3RIZWxw
ZXIgewogICAgICAgICB1bnJlYWNoYWJsZSgpOwogICAgIH0KICAgfQotCi0gIC8vIEVuc3VyZSB0
aGF0IGFsbCBlbmNvZGVkIGNvbW1hbmRzIGFyZSBmaW5pc2hlZCBhbmQgc3VibWl0dGVkLgotICBl
bnN1cmVTdWJtaXQoKSB7Ci0gICAgdGhpcy5lbnN1cmVDb250ZXh0KCdxdWV1ZScpOwotICAgIHRo
aXMuZmx1c2hDb21tYW5kQnVmZmVycygpOwotICB9Ci0KLSAgcG9wQ29udGV4dCgpIHsKLSAgICBz
d2l0Y2ggKHRoaXMuY3VycmVudENvbnRleHQpIHsKLSAgICAgIGNhc2UgJ3F1ZXVlJzoKLSAgICAg
ICAgdW5yZWFjaGFibGUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdjb21tYW5kLWVu
Y29kZXInOiB7Ci0gICAgICAgIGFzc2VydCh0aGlzLmNvbW1hbmRFbmNvZGVyICE9PSB1bmRlZmlu
ZWQpOwotICAgICAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gdGhpcy5jb21tYW5kRW5jb2Rlci5m
aW5pc2goKTsKLSAgICAgICAgdGhpcy5jb21tYW5kRW5jb2RlciA9IHVuZGVmaW5lZDsKLSAgICAg
ICAgdGhpcy5jdXJyZW50Q29udGV4dCA9ICdxdWV1ZSc7Ci0gICAgICAgIHJldHVybiBjb21tYW5k
QnVmZmVyOwotICAgICAgfQotICAgICAgY2FzZSAnY29tcHV0ZS1wYXNzLWVuY29kZXInOgotICAg
ICAgICBhc3NlcnQodGhpcy5jb21wdXRlUGFzc0VuY29kZXIgIT09IHVuZGVmaW5lZCk7Ci0gICAg
ICAgIHRoaXMuY29tcHV0ZVBhc3NFbmNvZGVyLmVuZCgpOwotICAgICAgICB0aGlzLmNvbXB1dGVQ
YXNzRW5jb2RlciA9IHVuZGVmaW5lZDsKLSAgICAgICAgdGhpcy5jdXJyZW50Q29udGV4dCA9ICdj
b21tYW5kLWVuY29kZXInOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3JlbmRlci1wYXNz
LWVuY29kZXInOgotICAgICAgICBhc3NlcnQodGhpcy5yZW5kZXJQYXNzRW5jb2RlciAhPT0gdW5k
ZWZpbmVkKTsKLSAgICAgICAgdGhpcy5yZW5kZXJQYXNzRW5jb2Rlci5lbmQoKTsKLSAgICAgICAg
dGhpcy5yZW5kZXJQYXNzRW5jb2RlciA9IHVuZGVmaW5lZDsKLSAgICAgICAgdGhpcy5jdXJyZW50
Q29udGV4dCA9ICdjb21tYW5kLWVuY29kZXInOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
J3JlbmRlci1idW5kbGUtZW5jb2Rlcic6IHsKLSAgICAgICAgYXNzZXJ0KHRoaXMucmVuZGVyQnVu
ZGxlRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKLSAgICAgICAgY29uc3QgcmVuZGVyQnVuZGxlID0g
dGhpcy5yZW5kZXJCdW5kbGVFbmNvZGVyLmZpbmlzaCgpOwotICAgICAgICB0aGlzLnJlbmRlckJ1
bmRsZUVuY29kZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAgIHRoaXMuY3VycmVudENvbnRleHQgPSAn
cmVuZGVyLXBhc3MtZW5jb2Rlcic7Ci0gICAgICAgIHJldHVybiByZW5kZXJCdW5kbGU7Ci0gICAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGw7Ci0gIH0KLQotICBtYWtlRHVtbXlBdHRhY2ht
ZW50KCkgewotICAgIGNvbnN0IHRleHR1cmUgPSB0aGlzLnQudHJhY2tGb3JDbGVhbnVwKAotICAg
ICAgdGhpcy5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICAgIGZvcm1hdDogdGhpcy5rVGV4
dHVyZUZvcm1hdCwKLSAgICAgICAgc2l6ZTogdGhpcy5rVGV4dHVyZVNpemUsCi0gICAgICAgIHVz
YWdlOiBHUFVUZXh0dXJlVXNhZ2UuUkVOREVSX0FUVEFDSE1FTlQsCi0gICAgICB9KQotICAgICk7
Ci0KLSAgICByZXR1cm4gewotICAgICAgdmlldzogdGV4dHVyZS5jcmVhdGVWaWV3KCksCi0gICAg
ICBsb2FkT3A6ICdsb2FkJywKLSAgICAgIHN0b3JlT3A6ICdzdG9yZScsCi0gICAgfTsKLSAgfQot
Ci0gIGVuc3VyZUNvbnRleHQoY29udGV4dCkgewotICAgIC8vIEZpbmQgdGhlIGNvbW1vbiBhbmNl
c3Rvci4gU28gd2UgY2FuIHRyYW5zaXRpb24gZnJvbSBjdXJyZW50Q29udGV4dCAtPiBjb250ZXh0
LgotICAgIGNvbnN0IGFuY2VzdG9yQ29udGV4dCA9Ci0gICAgICBrT3BlcmF0aW9uQ29udGV4dHNb
Ci0gICAgICAgIE1hdGgubWluKAotICAgICAgICAgIGtPcGVyYXRpb25Db250ZXh0cy5pbmRleE9m
KGNvbnRleHQpLAotICAgICAgICAgIGtPcGVyYXRpb25Db250ZXh0cy5pbmRleE9mKHRoaXMuY3Vy
cmVudENvbnRleHQpCi0gICAgICAgICkKLSAgICAgIF07Ci0KLSAgICAvLyBQb3AgdGhlIGNvbnRl
eHQgdW50aWwgd2UncmUgYXQgdGhlIGNvbW1vbiBhbmNlc3Rvci4KLSAgICB3aGlsZSAodGhpcy5j
dXJyZW50Q29udGV4dCAhPT0gYW5jZXN0b3JDb250ZXh0KSB7Ci0gICAgICAvLyBBYm91dCB0byBw
b3AgdGhlIHJlbmRlciBwYXNzIGVuY29kZXIuIEV4ZWN1dGUgYW55IG91dHN0YW5kaW5nIHJlbmRl
ciBidW5kbGVzLgotICAgICAgaWYgKHRoaXMuY3VycmVudENvbnRleHQgPT09ICdyZW5kZXItcGFz
cy1lbmNvZGVyJykgewotICAgICAgICB0aGlzLmZsdXNoUmVuZGVyQnVuZGxlcygpOwotICAgICAg
fQotCi0gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnBvcENvbnRleHQoKTsKLSAgICAgIGlmIChy
ZXN1bHQpIHsKLSAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEdQVVJlbmRlckJ1bmRsZSkg
ewotICAgICAgICAgIHRoaXMucmVuZGVyQnVuZGxlcy5wdXNoKHJlc3VsdCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgdGhpcy5jb21tYW5kQnVmZmVycy5wdXNoKHJlc3VsdCk7Ci0gICAg
ICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAodGhpcy5jdXJyZW50Q29udGV4dCA9PT0g
Y29udGV4dCkgewotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN3aXRjaCAoY29udGV4dCkg
ewotICAgICAgY2FzZSAncXVldWUnOgotICAgICAgICB1bnJlYWNoYWJsZSgpOwotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgJ2NvbW1hbmQtZW5jb2Rlcic6Ci0gICAgICAgIGFzc2VydCh0aGlz
LmN1cnJlbnRDb250ZXh0ID09PSAncXVldWUnKTsKLSAgICAgICAgdGhpcy5jb21tYW5kRW5jb2Rl
ciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSAnY29tcHV0ZS1wYXNzLWVuY29kZXInOgotICAgICAgICBzd2l0Y2ggKHRoaXMu
Y3VycmVudENvbnRleHQpIHsKLSAgICAgICAgICBjYXNlICdxdWV1ZSc6Ci0gICAgICAgICAgICB0
aGlzLmNvbW1hbmRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsK
LSAgICAgICAgICAvLyBmYWxsdGhyb3VnaAotICAgICAgICAgIGNhc2UgJ2NvbW1hbmQtZW5jb2Rl
cic6Ci0gICAgICAgICAgICBhc3NlcnQodGhpcy5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVk
KTsKLSAgICAgICAgICAgIHRoaXMuY29tcHV0ZVBhc3NFbmNvZGVyID0gdGhpcy5jb21tYW5kRW5j
b2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlICdjb21wdXRlLXBhc3MtZW5jb2Rlcic6Ci0gICAgICAgICAgY2FzZSAncmVuZGVyLWJ1bmRs
ZS1lbmNvZGVyJzoKLSAgICAgICAgICBjYXNlICdyZW5kZXItcGFzcy1lbmNvZGVyJzoKLSAgICAg
ICAgICAgIHVucmVhY2hhYmxlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgJ3JlbmRlci1wYXNzLWVuY29kZXInOgotICAgICAgICBzd2l0Y2ggKHRoaXMuY3VycmVu
dENvbnRleHQpIHsKLSAgICAgICAgICBjYXNlICdxdWV1ZSc6Ci0gICAgICAgICAgICB0aGlzLmNv
bW1hbmRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLSAgICAg
ICAgICAvLyBmYWxsdGhyb3VnaAotICAgICAgICAgIGNhc2UgJ2NvbW1hbmQtZW5jb2Rlcic6Ci0g
ICAgICAgICAgICBhc3NlcnQodGhpcy5jb21tYW5kRW5jb2RlciAhPT0gdW5kZWZpbmVkKTsKLSAg
ICAgICAgICAgIHRoaXMucmVuZGVyUGFzc0VuY29kZXIgPSB0aGlzLmNvbW1hbmRFbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyh7Ci0gICAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFt0aGlzLm1h
a2VEdW1teUF0dGFjaG1lbnQoKV0sCi0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSAncmVuZGVyLXBhc3MtZW5jb2Rlcic6Ci0gICAgICAgICAgY2Fz
ZSAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJzoKLSAgICAgICAgICBjYXNlICdjb21wdXRlLXBhc3Mt
ZW5jb2Rlcic6Ci0gICAgICAgICAgICB1bnJlYWNoYWJsZSgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlICdyZW5kZXItYnVuZGxlLWVuY29kZXInOgotICAgICAgICBz
d2l0Y2ggKHRoaXMuY3VycmVudENvbnRleHQpIHsKLSAgICAgICAgICBjYXNlICdxdWV1ZSc6Ci0g
ICAgICAgICAgICB0aGlzLmNvbW1hbmRFbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFu
ZEVuY29kZXIoKTsKLSAgICAgICAgICAvLyBmYWxsdGhyb3VnaAotICAgICAgICAgIGNhc2UgJ2Nv
bW1hbmQtZW5jb2Rlcic6Ci0gICAgICAgICAgICBhc3NlcnQodGhpcy5jb21tYW5kRW5jb2RlciAh
PT0gdW5kZWZpbmVkKTsKLSAgICAgICAgICAgIHRoaXMucmVuZGVyUGFzc0VuY29kZXIgPSB0aGlz
LmNvbW1hbmRFbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7Ci0gICAgICAgICAgICAgIGNvbG9yQXR0
YWNobWVudHM6IFt0aGlzLm1ha2VEdW1teUF0dGFjaG1lbnQoKV0sCi0gICAgICAgICAgICB9KTsK
LQotICAgICAgICAgIC8vIGZhbGx0aHJvdWdoCi0gICAgICAgICAgY2FzZSAncmVuZGVyLXBhc3Mt
ZW5jb2Rlcic6Ci0gICAgICAgICAgICB0aGlzLnJlbmRlckJ1bmRsZUVuY29kZXIgPSB0aGlzLmRl
dmljZS5jcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKHsKLSAgICAgICAgICAgICAgY29sb3JGb3Jt
YXRzOiBbdGhpcy5rVGV4dHVyZUZvcm1hdF0sCi0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJzoKLSAgICAg
ICAgICBjYXNlICdjb21wdXRlLXBhc3MtZW5jb2Rlcic6Ci0gICAgICAgICAgICB1bnJlYWNoYWJs
ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgdGhpcy5jdXJy
ZW50Q29udGV4dCA9IGNvbnRleHQ7Ci0gIH0KLQotICBmbHVzaFJlbmRlckJ1bmRsZXMoKSB7Ci0g
ICAgYXNzZXJ0KHRoaXMucmVuZGVyUGFzc0VuY29kZXIgIT09IHVuZGVmaW5lZCk7Ci0gICAgaWYg
KHRoaXMucmVuZGVyQnVuZGxlcy5sZW5ndGgpIHsKLSAgICAgIHRoaXMucmVuZGVyUGFzc0VuY29k
ZXIuZXhlY3V0ZUJ1bmRsZXModGhpcy5yZW5kZXJCdW5kbGVzKTsKLSAgICAgIHRoaXMucmVuZGVy
QnVuZGxlcyA9IFtdOwotICAgIH0KLSAgfQotCi0gIGZsdXNoQ29tbWFuZEJ1ZmZlcnMoKSB7Ci0g
ICAgaWYgKHRoaXMuY29tbWFuZEJ1ZmZlcnMubGVuZ3RoKSB7Ci0gICAgICB0aGlzLnF1ZXVlLnN1
Ym1pdCh0aGlzLmNvbW1hbmRCdWZmZXJzKTsKLSAgICAgIHRoaXMuY29tbWFuZEJ1ZmZlcnMgPSBb
XTsKLSAgICB9Ci0gIH0KLQotICBlbnN1cmVCb3VuZGFyeShib3VuZGFyeSkgewotICAgIHN3aXRj
aCAoYm91bmRhcnkpIHsKLSAgICAgIGNhc2UgJ2NvbW1hbmQtYnVmZmVyJzoKLSAgICAgICAgdGhp
cy5lbnN1cmVDb250ZXh0KCdxdWV1ZScpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3F1
ZXVlLW9wJzoKLSAgICAgICAgdGhpcy5lbnN1cmVDb250ZXh0KCdxdWV1ZScpOwotICAgICAgICAv
LyBTdWJtaXQgYW55IEdQVUNvbW1hbmRCdWZmZXJzIHNvIHRoZSBuZXh0IG9uZSBpcyBpbiBhIHNl
cGFyYXRlIHN1Ym1pdC4KLSAgICAgICAgdGhpcy5mbHVzaENvbW1hbmRCdWZmZXJzKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSAnZGlzcGF0Y2gnOgotICAgICAgICAvLyBOb3RoaW5nIHRv
IGRvIHRvIHNlcGFyYXRlIGRpc3BhdGNoZXMuCi0gICAgICAgIGFzc2VydCh0aGlzLmN1cnJlbnRD
b250ZXh0ID09PSAnY29tcHV0ZS1wYXNzLWVuY29kZXInKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlICdkcmF3JzoKLSAgICAgICAgLy8gTm90aGluZyB0byBkbyB0byBzZXBhcmF0ZSBkcmF3
cy4KLSAgICAgICAgYXNzZXJ0KAotICAgICAgICAgIHRoaXMuY3VycmVudENvbnRleHQgPT09ICdy
ZW5kZXItcGFzcy1lbmNvZGVyJyB8fAotICAgICAgICAgICAgdGhpcy5jdXJyZW50Q29udGV4dCA9
PT0gJ3JlbmRlci1idW5kbGUtZW5jb2RlcicKLSAgICAgICAgKTsKLQotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgJ3Bhc3MnOgotICAgICAgICB0aGlzLmVuc3VyZUNvbnRleHQoJ2NvbW1hbmQt
ZW5jb2RlcicpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3JlbmRlci1idW5kbGUnOgot
ICAgICAgICB0aGlzLmVuc3VyZUNvbnRleHQoJ3JlbmRlci1wYXNzLWVuY29kZXInKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlICdleGVjdXRlLWJ1bmRsZXMnOgotICAgICAgICB0aGlzLmVu
c3VyZUNvbnRleHQoJ3JlbmRlci1wYXNzLWVuY29kZXInKTsKLSAgICAgICAgLy8gRXhlY3V0ZSBh
bnkgR1BVUmVuZGVyQnVuZGxlcyBzbyB0aGUgbmV4dCBvbmUgaXMgaW4gYSBzZXBhcmF0ZSBleGVj
dXRlQnVuZGxlcy4KLSAgICAgICAgdGhpcy5mbHVzaFJlbmRlckJ1bmRsZXMoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICB9CiB9CiAKIGcudGVzdCgncncnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMv
dGV4dHVyZS90ZXh0dXJlX3N5bmNfdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL3RleHR1cmUvdGV4dHVyZV9zeW5j
X3Rlc3QuanMKaW5kZXggYzgxM2RlZjQ1OThlLi4xMmM0NDg2Njg5YWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9z
eW5jL3RleHR1cmUvdGV4dHVyZV9zeW5jX3Rlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvdGV4dHVyZS90ZXh0
dXJlX3N5bmNfdGVzdC5qcwpAQCAtMSw5NyArMSw2IEBACiAvKioKICAqIEFVVE8tR0VORVJBVEVE
IC0gRE8gTk9UIEVESVQuIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9jdHMKICAq
Ki8gaW1wb3J0IHsgR1BVQ29uc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHMuanMnOwot
LyoqCi0gKiBCb3VuZGFyeSBiZXR3ZWVuIHRoZSBmaXJzdCBvcGVyYXRpb24sIGFuZCB0aGUgc2Vj
b25kIG9wZXJhdGlvbi4KLSAqLwotZXhwb3J0IGNvbnN0IGtPcGVyYXRpb25Cb3VuZGFyaWVzID0g
WwotICAncXVldWUtb3AnLCAvLyBPcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgaW4gZGlmZmVyZW50
IHF1ZXVlIG9wZXJhdGlvbnMgKHN1Ym1pdCwgd3JpdGVUZXh0dXJlKS4KLSAgJ2NvbW1hbmQtYnVm
ZmVyJywgLy8gT3BlcmF0aW9ucyBhcmUgaW4gZGlmZmVyZW50IGNvbW1hbmQgYnVmZmVycy4KLSAg
J3Bhc3MnLCAvLyBPcGVyYXRpb25zIGFyZSBpbiBkaWZmZXJlbnQgcGFzc2VzLgotICAnZXhlY3V0
ZS1idW5kbGVzJywgLy8gT3BlcmF0aW9ucyBhcmUgaW4gZGlmZmVyZW50IGV4ZWN1dGVCdW5kbGVz
KC4uLikgY2FsbHMKLSAgJ3JlbmRlci1idW5kbGUnLCAvLyBPcGVyYXRpb25zIGFyZSBpbiBkaWZm
ZXJlbnQgcmVuZGVyIGJ1bmRsZXMuCi0gICdkaXNwYXRjaCcsIC8vIE9wZXJhdGlvbnMgYXJlIGlu
IGRpZmZlcmVudCBkaXNwYXRjaGVzLgotICAnZHJhdycsIC8vIE9wZXJhdGlvbnMgYXJlIGluIGRp
ZmZlcmVudCBkcmF3cy4KLV07Ci0KLS8qKgotICogQ29udGV4dCBhIHBhcnRpY3VsYXIgb3BlcmF0
aW9uIGlzIHBlcm1pdHRlZCBpbi4KLSAqIFRoZXNlIGNvbnRleHRzIHNob3VsZCBiZSBzb3J0ZWQg
c3VjaCB0aGF0IHRoZSBmaXJzdCBpcyB0aGUgbW9zdCB0b3AtbGV2ZWwKLSAqIGNvbnRleHQsIGFu
ZCB0aGUgbGFzdCBpcyBtb3N0IG5lc3RlZCAoaW5zaWRlIGEgcmVuZGVyIGJ1bmRsZSwgaW4gYSBy
ZW5kZXIgcGFzcywgLi4uKS4KLSAqLwotZXhwb3J0IGNvbnN0IGtPcGVyYXRpb25Db250ZXh0cyA9
IFsKLSAgJ3F1ZXVlJywgLy8gT3BlcmF0aW9uIG9jY3VycyBvbiB0aGUgR1BVUXVldWUgb2JqZWN0
Ci0gICdjb21tYW5kLWVuY29kZXInLCAvLyBPcGVyYXRpb24gbWF5IGJlIGVuY29kZWQgaW4gYSBH
UFVDb21tYW5kRW5jb2Rlci4KLSAgJ2NvbXB1dGUtcGFzcy1lbmNvZGVyJywgLy8gT3BlcmF0aW9u
IG1heSBiZSBlbmNvZGVkIGluIGEgR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLgotICAncmVuZGVyLXBh
c3MtZW5jb2RlcicsIC8vIE9wZXJhdGlvbiBtYXkgYmUgZW5jb2RlZCBpbiBhIEdQVVJlbmRlclBh
c3NFbmNvZGVyLgotICAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJywgLy8gT3BlcmF0aW9uIG1heSBi
ZSBlbmNvZGVkIGluIGEgR1BVUmVuZGVyQnVuZGxlRW5jb2Rlci4KLV07Ci0KLWZ1bmN0aW9uIGNv
bWJpbmVDb250ZXh0cyhhcywgYnMpIHsKLSAgY29uc3QgcmVzdWx0ID0gW107Ci0gIGZvciAoY29u
c3QgYSBvZiBhcykgewotICAgIGZvciAoY29uc3QgYiBvZiBicykgewotICAgICAgcmVzdWx0LnB1
c2goW2EsIGJdKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotY29uc3QgcXVl
dWVDb250ZXh0cyA9IGNvbWJpbmVDb250ZXh0cyhrT3BlcmF0aW9uQ29udGV4dHMsIGtPcGVyYXRp
b25Db250ZXh0cyk7Ci1jb25zdCBjb21tYW5kQnVmZmVyQ29udGV4dHMgPSBjb21iaW5lQ29udGV4
dHMoCi0gIGtPcGVyYXRpb25Db250ZXh0cy5maWx0ZXIoYyA9PiBjICE9PSAncXVldWUnKSwKLSAg
a09wZXJhdGlvbkNvbnRleHRzLmZpbHRlcihjID0+IGMgIT09ICdxdWV1ZScpCi0pOwotCi0vKioK
LSAqIE1hcHBpbmcgb2YgT3BlcmF0aW9uQm91bmRhcnkgPT4gdG8gYSBzZXQgb2YgT3BlcmF0aW9u
Q29udGV4dCBwYWlycy4KLSAqIFRoZSBib3VuZGFyeSBpcyBjYXBhYmxlIG9mIHNlcGFyYXRpbmcg
b3BlcmF0aW9ucyBpbiB0aG9zZSB0d28gY29udGV4dHMuCi0gKi8KLWV4cG9ydCBjb25zdCBrQm91
bmRhcnlJbmZvID0gewotICAncXVldWUtb3AnOiB7Ci0gICAgY29udGV4dHM6IHF1ZXVlQ29udGV4
dHMsCi0gIH0sCi0KLSAgJ2NvbW1hbmQtYnVmZmVyJzogewotICAgIGNvbnRleHRzOiBjb21tYW5k
QnVmZmVyQ29udGV4dHMsCi0gIH0sCi0KLSAgcGFzczogewotICAgIGNvbnRleHRzOiBbCi0gICAg
ICBbJ2NvbXB1dGUtcGFzcy1lbmNvZGVyJywgJ2NvbXB1dGUtcGFzcy1lbmNvZGVyJ10sCi0gICAg
ICBbJ2NvbXB1dGUtcGFzcy1lbmNvZGVyJywgJ3JlbmRlci1wYXNzLWVuY29kZXInXSwKLSAgICAg
IFsncmVuZGVyLXBhc3MtZW5jb2RlcicsICdjb21wdXRlLXBhc3MtZW5jb2RlciddLAotICAgICAg
WydyZW5kZXItcGFzcy1lbmNvZGVyJywgJ3JlbmRlci1wYXNzLWVuY29kZXInXSwKLSAgICAgIFsn
cmVuZGVyLWJ1bmRsZS1lbmNvZGVyJywgJ3JlbmRlci1wYXNzLWVuY29kZXInXSwKLSAgICAgIFsn
cmVuZGVyLXBhc3MtZW5jb2RlcicsICdyZW5kZXItYnVuZGxlLWVuY29kZXInXSwKLSAgICAgIFsn
cmVuZGVyLWJ1bmRsZS1lbmNvZGVyJywgJ3JlbmRlci1idW5kbGUtZW5jb2RlciddLAotICAgIF0s
Ci0gIH0sCi0KLSAgJ2V4ZWN1dGUtYnVuZGxlcyc6IHsKLSAgICBjb250ZXh0czogW1sncmVuZGVy
LWJ1bmRsZS1lbmNvZGVyJywgJ3JlbmRlci1idW5kbGUtZW5jb2RlciddXSwKLSAgfSwKLQotICAn
cmVuZGVyLWJ1bmRsZSc6IHsKLSAgICBjb250ZXh0czogWwotICAgICAgWydyZW5kZXItYnVuZGxl
LWVuY29kZXInLCAncmVuZGVyLXBhc3MtZW5jb2RlciddLAotICAgICAgWydyZW5kZXItcGFzcy1l
bmNvZGVyJywgJ3JlbmRlci1idW5kbGUtZW5jb2RlciddLAotICAgICAgWydyZW5kZXItYnVuZGxl
LWVuY29kZXInLCAncmVuZGVyLWJ1bmRsZS1lbmNvZGVyJ10sCi0gICAgXSwKLSAgfSwKLQotICBk
aXNwYXRjaDogewotICAgIGNvbnRleHRzOiBbWydjb21wdXRlLXBhc3MtZW5jb2RlcicsICdjb21w
dXRlLXBhc3MtZW5jb2RlciddXSwKLSAgfSwKLQotICBkcmF3OiB7Ci0gICAgY29udGV4dHM6IFsK
LSAgICAgIFsncmVuZGVyLXBhc3MtZW5jb2RlcicsICdyZW5kZXItcGFzcy1lbmNvZGVyJ10sCi0g
ICAgICBbJ3JlbmRlci1idW5kbGUtZW5jb2RlcicsICdyZW5kZXItcGFzcy1lbmNvZGVyJ10sCi0g
ICAgXSwKLSAgfSwKLX07Ci0KIGV4cG9ydCBjb25zdCBrQWxsV3JpdGVPcHMgPSBbCiAgICd3cml0
ZS10ZXh0dXJlJywKICAgJ2IydC1jb3B5JywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcl9wYXNzL3Jlc29sdmUuc3Bl
Yy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9u
L3JlbmRlcl9wYXNzL3Jlc29sdmUuc3BlYy5qcwppbmRleCBmY2I0ZDQyOTFiYzguLjVjODdmYzc5
YzU3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2Fw
aS9vcGVyYXRpb24vcmVuZGVyX3Bhc3MvcmVzb2x2ZS5zcGVjLmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcl9wYXNzL3Jlc29s
dmUuc3BlYy5qcwpAQCAtNzEsMTAgKzcxLDEwIEBAIGcudGVzdCgncmVuZGVyX3Bhc3NfcmVzb2x2
ZScpCiAgICAgICAgIG1vZHVsZTogdC5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAg
ICAgICBjb2RlOiBgCiAgICAgICAgICAgICBzdHJ1Y3QgT3V0cHV0IHsKLSAgICAgICAgICAgICAg
QGxvY2F0aW9uKDApIGZyYWdDb2xvcjAgOiB2ZWM0PGYzMj47Ci0gICAgICAgICAgICAgIEBsb2Nh
dGlvbigxKSBmcmFnQ29sb3IxIDogdmVjNDxmMzI+OwotICAgICAgICAgICAgICBAbG9jYXRpb24o
MikgZnJhZ0NvbG9yMiA6IHZlYzQ8ZjMyPjsKLSAgICAgICAgICAgICAgQGxvY2F0aW9uKDMpIGZy
YWdDb2xvcjMgOiB2ZWM0PGYzMj47CisgICAgICAgICAgICAgIEBsb2NhdGlvbigwKSBmcmFnQ29s
b3IwIDogdmVjNDxmMzI+LAorICAgICAgICAgICAgICBAbG9jYXRpb24oMSkgZnJhZ0NvbG9yMSA6
IHZlYzQ8ZjMyPiwKKyAgICAgICAgICAgICAgQGxvY2F0aW9uKDIpIGZyYWdDb2xvcjIgOiB2ZWM0
PGYzMj4sCisgICAgICAgICAgICAgIEBsb2NhdGlvbigzKSBmcmFnQ29sb3IzIDogdmVjNDxmMzI+
LAogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgQHN0YWdlKGZyYWdtZW50KSBmbiBtYWlu
KCkgLT4gT3V0cHV0IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcl9wYXNzL3N0b3JlT3Auc3BlYy5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcl9wYXNz
L3N0b3JlT3Auc3BlYy5qcwppbmRleCA3NTVkNTlmMmRjYzguLjhiMmQ2YWViMTQ5MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24v
cmVuZGVyX3Bhc3Mvc3RvcmVPcC5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcl9wYXNzL3N0b3JlT3Auc3BlYy5qcwpA
QCAtMTM1LDYgKzEzNSw3IEBAIGcudGVzdCgncmVuZGVyX3Bhc3Nfc3RvcmVfb3AsY29sb3JfYXR0
YWNobWVudF93aXRoX2RlcHRoX3N0ZW5jaWxfYXR0YWNobWVudCcpCiAgICAgdC5leHBlY3RTaW5n
bGVDb2xvcihkZXB0aFN0ZW5jaWxBdHRhY2htZW50LCBrRGVwdGhTdGVuY2lsRm9ybWF0LCB7CiAg
ICAgICBzaXplOiBba0hlaWdodCwga1dpZHRoLCAxXSwKICAgICAgIGV4cDogZXhwZWN0ZWREZXB0
aFZhbHVlLAorICAgICAgbGF5b3V0OiB7IG1pcExldmVsOiAwLCBhc3BlY3Q6ICdkZXB0aC1vbmx5
JyB9LAogICAgIH0pOwogICB9KTsKIApAQCAtMzI4LDE5ICszMjksMzIgQEAgVE9ETzogQWxzbyB0
ZXN0IHVuc2l6ZWQgZGVwdGgvc3RlbmNpbCBmb3JtYXRzIFsxXQogICAgIHBhc3MuZW5kKCk7CiAg
ICAgdC5kZXZpY2UucXVldWUuc3VibWl0KFtlbmNvZGVyLmZpbmlzaCgpXSk7CiAKLSAgICBsZXQg
ZXhwZWN0ZWRWYWx1ZSA9IHt9OworICAgIGxldCBleHBlY3RlZERlcHRoVmFsdWUgPSB7fTsKKyAg
ICBsZXQgZXhwZWN0ZWRTdGVuY2lsVmFsdWUgPSB7fTsKICAgICBpZiAodC5wYXJhbXMuc3RvcmVP
cGVyYXRpb24gPT09ICdkaXNjYXJkJykgewotICAgICAgLy8gSWYgZGVwdGhTdGVuY2lsU3RvcmVP
cGVyYXRpb24gd2FzIGNsZWFyLCB0aGUgdGV4dHVyZSdzIGRlcHRoIGNvbXBvbmVudCBzaG91bGQg
YmUgMC4wLAotICAgICAgZXhwZWN0ZWRWYWx1ZSA9IHsgRGVwdGg6IDAuMCB9OworICAgICAgLy8g
SWYgZGVwdGhTdGVuY2lsU3RvcmVPcGVyYXRpb24gd2FzIGNsZWFyLCB0aGUgdGV4dHVyZSdzIGRl
cHRoL3N0ZW5jaWwgY29tcG9uZW50IHNob3VsZCBiZSAwLAorICAgICAgZXhwZWN0ZWREZXB0aFZh
bHVlID0geyBEZXB0aDogMC4wIH07CisgICAgICBleHBlY3RlZFN0ZW5jaWxWYWx1ZSA9IHsgU3Rl
bmNpbDogMCB9OwogICAgIH0gZWxzZSBpZiAodC5wYXJhbXMuc3RvcmVPcGVyYXRpb24gPT09ICdz
dG9yZScpIHsKLSAgICAgIC8vIElmIGRlcHRoU3RlbmNpbFN0b3JlT3BlcmF0aW9uIHdhcyBzdG9y
ZSwgdGhlIHRleHR1cmUncyBkZXB0aCBjb21wb25lbnQgc2hvdWxkIGJlIDEuMCwKLSAgICAgIGV4
cGVjdGVkVmFsdWUgPSB7IERlcHRoOiAxLjAgfTsKKyAgICAgIC8vIElmIGRlcHRoU3RlbmNpbFN0
b3JlT3BlcmF0aW9uIHdhcyBzdG9yZSwgdGhlIHRleHR1cmUncyBkZXB0aC9zdGVuY2lsIGNvbXBv
bmVudHMgc2hvdWxkIGJlIDEsCisgICAgICBleHBlY3RlZERlcHRoVmFsdWUgPSB7IERlcHRoOiAx
LjAgfTsKKyAgICAgIGV4cGVjdGVkU3RlbmNpbFZhbHVlID0geyBTdGVuY2lsOiAxIH07CiAgICAg
fQogCi0gICAgdC5leHBlY3RTaW5nbGVDb2xvcihkZXB0aFN0ZW5jaWxUZXh0dXJlLCB0LnBhcmFt
cy5kZXB0aFN0ZW5jaWxGb3JtYXQsIHsKLSAgICAgIHNpemU6IFtrSGVpZ2h0LCBrV2lkdGgsIDFd
LAotICAgICAgc2xpY2U6IHQucGFyYW1zLmFycmF5TGF5ZXIsCi0gICAgICBleHA6IGV4cGVjdGVk
VmFsdWUsCi0gICAgICBsYXlvdXQ6IHsgbWlwTGV2ZWw6IHQucGFyYW1zLm1pcExldmVsIH0sCi0g
ICAgfSk7CisgICAgaWYgKGtUZXh0dXJlRm9ybWF0SW5mb1t0LnBhcmFtcy5kZXB0aFN0ZW5jaWxG
b3JtYXRdLmRlcHRoKSB7CisgICAgICB0LmV4cGVjdFNpbmdsZUNvbG9yKGRlcHRoU3RlbmNpbFRl
eHR1cmUsIHQucGFyYW1zLmRlcHRoU3RlbmNpbEZvcm1hdCwgeworICAgICAgICBzaXplOiBba0hl
aWdodCwga1dpZHRoLCAxXSwKKyAgICAgICAgc2xpY2U6IHQucGFyYW1zLmFycmF5TGF5ZXIsCisg
ICAgICAgIGV4cDogZXhwZWN0ZWREZXB0aFZhbHVlLAorICAgICAgICBsYXlvdXQ6IHsgbWlwTGV2
ZWw6IHQucGFyYW1zLm1pcExldmVsLCBhc3BlY3Q6ICdkZXB0aC1vbmx5JyB9LAorICAgICAgfSk7
CisgICAgfQorICAgIGlmIChrVGV4dHVyZUZvcm1hdEluZm9bdC5wYXJhbXMuZGVwdGhTdGVuY2ls
Rm9ybWF0XS5zdGVuY2lsKSB7CisgICAgICB0LmV4cGVjdFNpbmdsZUNvbG9yKGRlcHRoU3RlbmNp
bFRleHR1cmUsIHQucGFyYW1zLmRlcHRoU3RlbmNpbEZvcm1hdCwgeworICAgICAgICBzaXplOiBb
a0hlaWdodCwga1dpZHRoLCAxXSwKKyAgICAgICAgc2xpY2U6IHQucGFyYW1zLmFycmF5TGF5ZXIs
CisgICAgICAgIGV4cDogZXhwZWN0ZWRTdGVuY2lsVmFsdWUsCisgICAgICAgIGxheW91dDogeyBt
aXBMZXZlbDogdC5wYXJhbXMubWlwTGV2ZWwsIGFzcGVjdDogJ3N0ZW5jaWwtb25seScgfSwKKyAg
ICAgIH0pOworICAgIH0KICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJpbmcvYmFzaWMuc3BlYy5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRlcmlu
Zy9iYXNpYy5zcGVjLmpzCmluZGV4IDg3MmM2N2FhMDM2Yi4uZTMwMjJhYWVmOGNlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9y
ZW5kZXJpbmcvYmFzaWMuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJpbmcvYmFzaWMuc3BlYy5qcwpAQCAtMjMzLDgg
KzIzMyw4IEBAIGcudGVzdCgnbGFyZ2VfZHJhdycpCiAgICAgICAgIG1vZHVsZTogdC5kZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAgICAgICBjb2RlOiBgCiAgICAgICAgICAgc3RydWN0
IFBhcmFtcyB7Ci0gICAgICAgICAgICBudW1WZXJ0aWNlczogdTMyOwotICAgICAgICAgICAgbnVt
SW5zdGFuY2VzOiB1MzI7CisgICAgICAgICAgICBudW1WZXJ0aWNlczogdTMyLAorICAgICAgICAg
ICAgbnVtSW5zdGFuY2VzOiB1MzIsCiAgICAgICAgICAgfTsKIAogICAgICAgICAgIGZuIHNlbGVj
dFZhbHVlKGluZGV4OiB1MzIsIG1heEluZGV4OiB1MzIpIC0+IGYzMiB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJp
bmcvYmxlbmRpbmcuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9hcGkvb3BlcmF0aW9uL3JlbmRlcmluZy9ibGVuZGluZy5zcGVjLmpzCmluZGV4IDFmN2Y5YzI2
MDU3Mi4uOTdkYWQ0ZTA5YjNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJpbmcvYmxlbmRpbmcuc3BlYy5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5k
ZXJpbmcvYmxlbmRpbmcuc3BlYy5qcwpAQCAtMTY4LDcgKzE2OCw3IEBAIGcudGVzdCgnR1BVQmxl
bmRDb21wb25lbnQnKQogICAgICAgICBtb2R1bGU6IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7CiAgICAgICAgICAgY29kZTogYAogc3RydWN0IFVuaWZvcm0gewotICBjb2xvcjogdmVjNDxm
MzI+OworICBjb2xvcjogdmVjNDxmMzI+CiB9OwogQGdyb3VwKDApIEBiaW5kaW5nKDApIHZhcjx1
bmlmb3JtPiB1IDogVW5pZm9ybTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVuZGVyaW5nL2RlcHRoLnNwZWMuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJp
bmcvZGVwdGguc3BlYy5qcwppbmRleCBjYjUxZTk1N2IyOTUuLjY3NzEzNzllODc4NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24v
cmVuZGVyaW5nL2RlcHRoLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVuZGVyaW5nL2RlcHRoLnNwZWMuanMKQEAgLTI0LDYg
KzI0LDEwIEBAIGcudGVzdCgnZGVwdGhfd3JpdGVfZGlzYWJsZWQnKQogICAuZGVzYyhgVGVzdHMg
cmVuZGVyIHJlc3VsdHMgd2l0aCBkZXB0aCB3cml0ZSBkaXNhYmxlZGApCiAgIC51bmltcGxlbWVu
dGVkKCk7CiAKKy8vIFVzZSBhIGRlcHRoIHZhbHVlIHRoYXQncyBub3QgZXhhY3RseSAwLjUgYmVj
YXVzZSBpdCBpcyBleGFjdGx5IGJldHdlZW4gdHdvIGRlcHRoMTZ1bm9ybSB2YWx1ZSBhbmQKKy8v
IGNhbiBnZXQgcm91bmRlZCBlaXRoZXIgd2F5IChhbmQgYSBkaWZmZXJlbnQgd2F5IGJldHdlZW4g
c2hhZGVycyBhbmQgY2xlYXJEZXB0aFZhbHVlKS4KK2NvbnN0IGtNaWRkbGVEZXB0aFZhbHVlID0g
MC41MDAxOworCiBnLnRlc3QoJ2RlcHRoX2NvbXBhcmVfZnVuYycpCiAgIC5kZXNjKAogICAgIGBU
ZXN0cyBlYWNoIGRlcHRoIGNvbXBhcmUgZnVuY3Rpb24gd29ya3MgcHJvcGVybHkuIENsZWFycyB0
aGUgZGVwdGggYXR0YWNobWVudCB0byB2YXJpb3VzIHZhbHVlcywgYW5kIHJlbmRlcnMgYSBwb2lu
dCBhdCBkZXB0aCAwLjUgd2l0aCB2YXJpb3VzIGRlcHRoQ29tcGFyZSBtb2Rlcy5gCkBAIC0zNiwy
OCArNDAsNDMgQEAgZy50ZXN0KCdkZXB0aF9jb21wYXJlX2Z1bmMnKQogICAgICAgKQogICAgICAg
LmNvbWJpbmVXaXRoUGFyYW1zKFsKICAgICAgICAgeyBkZXB0aENvbXBhcmU6ICduZXZlcicsIGRl
cHRoQ2xlYXJWYWx1ZTogMS4wLCBfZXhwZWN0ZWQ6IGJhY2tncm91bmRDb2xvciB9LAotICAgICAg
ICB7IGRlcHRoQ29tcGFyZTogJ25ldmVyJywgZGVwdGhDbGVhclZhbHVlOiAwLjUsIF9leHBlY3Rl
ZDogYmFja2dyb3VuZENvbG9yIH0sCisgICAgICAgIHsgZGVwdGhDb21wYXJlOiAnbmV2ZXInLCBk
ZXB0aENsZWFyVmFsdWU6IGtNaWRkbGVEZXB0aFZhbHVlLCBfZXhwZWN0ZWQ6IGJhY2tncm91bmRD
b2xvciB9LAogICAgICAgICB7IGRlcHRoQ29tcGFyZTogJ25ldmVyJywgZGVwdGhDbGVhclZhbHVl
OiAwLjAsIF9leHBlY3RlZDogYmFja2dyb3VuZENvbG9yIH0sCiAgICAgICAgIHsgZGVwdGhDb21w
YXJlOiAnbGVzcycsIGRlcHRoQ2xlYXJWYWx1ZTogMS4wLCBfZXhwZWN0ZWQ6IHRyaWFuZ2xlQ29s
b3IgfSwKLSAgICAgICAgeyBkZXB0aENvbXBhcmU6ICdsZXNzJywgZGVwdGhDbGVhclZhbHVlOiAw
LjUsIF9leHBlY3RlZDogYmFja2dyb3VuZENvbG9yIH0sCisgICAgICAgIHsgZGVwdGhDb21wYXJl
OiAnbGVzcycsIGRlcHRoQ2xlYXJWYWx1ZToga01pZGRsZURlcHRoVmFsdWUsIF9leHBlY3RlZDog
YmFja2dyb3VuZENvbG9yIH0sCiAgICAgICAgIHsgZGVwdGhDb21wYXJlOiAnbGVzcycsIGRlcHRo
Q2xlYXJWYWx1ZTogMC4wLCBfZXhwZWN0ZWQ6IGJhY2tncm91bmRDb2xvciB9LAogICAgICAgICB7
IGRlcHRoQ29tcGFyZTogJ2xlc3MtZXF1YWwnLCBkZXB0aENsZWFyVmFsdWU6IDEuMCwgX2V4cGVj
dGVkOiB0cmlhbmdsZUNvbG9yIH0sCi0gICAgICAgIHsgZGVwdGhDb21wYXJlOiAnbGVzcy1lcXVh
bCcsIGRlcHRoQ2xlYXJWYWx1ZTogMC41LCBfZXhwZWN0ZWQ6IHRyaWFuZ2xlQ29sb3IgfSwKKyAg
ICAgICAgeworICAgICAgICAgIGRlcHRoQ29tcGFyZTogJ2xlc3MtZXF1YWwnLAorICAgICAgICAg
IGRlcHRoQ2xlYXJWYWx1ZToga01pZGRsZURlcHRoVmFsdWUsCisgICAgICAgICAgX2V4cGVjdGVk
OiB0cmlhbmdsZUNvbG9yLAorICAgICAgICB9LAorCiAgICAgICAgIHsgZGVwdGhDb21wYXJlOiAn
bGVzcy1lcXVhbCcsIGRlcHRoQ2xlYXJWYWx1ZTogMC4wLCBfZXhwZWN0ZWQ6IGJhY2tncm91bmRD
b2xvciB9LAogICAgICAgICB7IGRlcHRoQ29tcGFyZTogJ2VxdWFsJywgZGVwdGhDbGVhclZhbHVl
OiAxLjAsIF9leHBlY3RlZDogYmFja2dyb3VuZENvbG9yIH0sCi0gICAgICAgIHsgZGVwdGhDb21w
YXJlOiAnZXF1YWwnLCBkZXB0aENsZWFyVmFsdWU6IDAuNSwgX2V4cGVjdGVkOiB0cmlhbmdsZUNv
bG9yIH0sCisgICAgICAgIHsgZGVwdGhDb21wYXJlOiAnZXF1YWwnLCBkZXB0aENsZWFyVmFsdWU6
IGtNaWRkbGVEZXB0aFZhbHVlLCBfZXhwZWN0ZWQ6IHRyaWFuZ2xlQ29sb3IgfSwKICAgICAgICAg
eyBkZXB0aENvbXBhcmU6ICdlcXVhbCcsIGRlcHRoQ2xlYXJWYWx1ZTogMC4wLCBfZXhwZWN0ZWQ6
IGJhY2tncm91bmRDb2xvciB9LAogICAgICAgICB7IGRlcHRoQ29tcGFyZTogJ25vdC1lcXVhbCcs
IGRlcHRoQ2xlYXJWYWx1ZTogMS4wLCBfZXhwZWN0ZWQ6IHRyaWFuZ2xlQ29sb3IgfSwKLSAgICAg
ICAgeyBkZXB0aENvbXBhcmU6ICdub3QtZXF1YWwnLCBkZXB0aENsZWFyVmFsdWU6IDAuNSwgX2V4
cGVjdGVkOiBiYWNrZ3JvdW5kQ29sb3IgfSwKKyAgICAgICAgeworICAgICAgICAgIGRlcHRoQ29t
cGFyZTogJ25vdC1lcXVhbCcsCisgICAgICAgICAgZGVwdGhDbGVhclZhbHVlOiBrTWlkZGxlRGVw
dGhWYWx1ZSwKKyAgICAgICAgICBfZXhwZWN0ZWQ6IGJhY2tncm91bmRDb2xvciwKKyAgICAgICAg
fSwKKwogICAgICAgICB7IGRlcHRoQ29tcGFyZTogJ25vdC1lcXVhbCcsIGRlcHRoQ2xlYXJWYWx1
ZTogMC4wLCBfZXhwZWN0ZWQ6IHRyaWFuZ2xlQ29sb3IgfSwKICAgICAgICAgeyBkZXB0aENvbXBh
cmU6ICdncmVhdGVyLWVxdWFsJywgZGVwdGhDbGVhclZhbHVlOiAxLjAsIF9leHBlY3RlZDogYmFj
a2dyb3VuZENvbG9yIH0sCi0gICAgICAgIHsgZGVwdGhDb21wYXJlOiAnZ3JlYXRlci1lcXVhbCcs
IGRlcHRoQ2xlYXJWYWx1ZTogMC41LCBfZXhwZWN0ZWQ6IHRyaWFuZ2xlQ29sb3IgfSwKKyAgICAg
ICAgeworICAgICAgICAgIGRlcHRoQ29tcGFyZTogJ2dyZWF0ZXItZXF1YWwnLAorICAgICAgICAg
IGRlcHRoQ2xlYXJWYWx1ZToga01pZGRsZURlcHRoVmFsdWUsCisgICAgICAgICAgX2V4cGVjdGVk
OiB0cmlhbmdsZUNvbG9yLAorICAgICAgICB9LAorCiAgICAgICAgIHsgZGVwdGhDb21wYXJlOiAn
Z3JlYXRlci1lcXVhbCcsIGRlcHRoQ2xlYXJWYWx1ZTogMC4wLCBfZXhwZWN0ZWQ6IHRyaWFuZ2xl
Q29sb3IgfSwKICAgICAgICAgeyBkZXB0aENvbXBhcmU6ICdncmVhdGVyJywgZGVwdGhDbGVhclZh
bHVlOiAxLjAsIF9leHBlY3RlZDogYmFja2dyb3VuZENvbG9yIH0sCi0gICAgICAgIHsgZGVwdGhD
b21wYXJlOiAnZ3JlYXRlcicsIGRlcHRoQ2xlYXJWYWx1ZTogMC41LCBfZXhwZWN0ZWQ6IGJhY2tn
cm91bmRDb2xvciB9LAorICAgICAgICB7IGRlcHRoQ29tcGFyZTogJ2dyZWF0ZXInLCBkZXB0aENs
ZWFyVmFsdWU6IGtNaWRkbGVEZXB0aFZhbHVlLCBfZXhwZWN0ZWQ6IGJhY2tncm91bmRDb2xvciB9
LAogICAgICAgICB7IGRlcHRoQ29tcGFyZTogJ2dyZWF0ZXInLCBkZXB0aENsZWFyVmFsdWU6IDAu
MCwgX2V4cGVjdGVkOiB0cmlhbmdsZUNvbG9yIH0sCiAgICAgICAgIHsgZGVwdGhDb21wYXJlOiAn
YWx3YXlzJywgZGVwdGhDbGVhclZhbHVlOiAxLjAsIF9leHBlY3RlZDogdHJpYW5nbGVDb2xvciB9
LAotICAgICAgICB7IGRlcHRoQ29tcGFyZTogJ2Fsd2F5cycsIGRlcHRoQ2xlYXJWYWx1ZTogMC41
LCBfZXhwZWN0ZWQ6IHRyaWFuZ2xlQ29sb3IgfSwKKyAgICAgICAgeyBkZXB0aENvbXBhcmU6ICdh
bHdheXMnLCBkZXB0aENsZWFyVmFsdWU6IGtNaWRkbGVEZXB0aFZhbHVlLCBfZXhwZWN0ZWQ6IHRy
aWFuZ2xlQ29sb3IgfSwKICAgICAgICAgeyBkZXB0aENvbXBhcmU6ICdhbHdheXMnLCBkZXB0aENs
ZWFyVmFsdWU6IDAuMCwgX2V4cGVjdGVkOiB0cmlhbmdsZUNvbG9yIH0sCiAgICAgICBdKQogICAp
CkBAIC04OCw3ICsxMDcsNyBAQCBnLnRlc3QoJ2RlcHRoX2NvbXBhcmVfZnVuYycpCiAgICAgICAg
ICAgY29kZTogYAogICAgICAgICAgICAgQHN0YWdlKHZlcnRleCkgZm4gbWFpbigKICAgICAgICAg
ICAgICAgQGJ1aWx0aW4odmVydGV4X2luZGV4KSBWZXJ0ZXhJbmRleCA6IHUzMikgLT4gQGJ1aWx0
aW4ocG9zaXRpb24pIHZlYzQ8ZjMyPiB7Ci0gICAgICAgICAgICAgIHJldHVybiB2ZWM0PGYzMj4o
MC41LCAwLjUsIDAuNSwgMS4wKTsKKyAgICAgICAgICAgICAgcmV0dXJuIHZlYzQ8ZjMyPigwLjUs
IDAuNSwgJHtrTWlkZGxlRGVwdGhWYWx1ZX0sIDEuMCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBgLAogICAgICAgICB9KSwKQEAgLTE4OSw4ICsyMDgsOCBAQCBnLnRlc3QoJ3JldmVyc2Vf
ZGVwdGgnKQogICAgICAgICBtb2R1bGU6IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAg
ICAgICAgICAgY29kZTogYAogICAgICAgICAgICAgc3RydWN0IE91dHB1dCB7Ci0gICAgICAgICAg
ICAgIEBidWlsdGluKHBvc2l0aW9uKSBQb3NpdGlvbiA6IHZlYzQ8ZjMyPjsKLSAgICAgICAgICAg
ICAgQGxvY2F0aW9uKDApIGNvbG9yIDogdmVjNDxmMzI+OworICAgICAgICAgICAgICBAYnVpbHRp
bihwb3NpdGlvbikgUG9zaXRpb24gOiB2ZWM0PGYzMj4sCisgICAgICAgICAgICAgIEBsb2NhdGlv
bigwKSBjb2xvciA6IHZlYzQ8ZjMyPiwKICAgICAgICAgICAgIH07CiAKICAgICAgICAgICAgIEBz
dGFnZSh2ZXJ0ZXgpIGZuIG1haW4oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJpbmcvZGVwdGhfY2xpcF9jbGFtcC5z
cGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRp
b24vcmVuZGVyaW5nL2RlcHRoX2NsaXBfY2xhbXAuc3BlYy5qcwppbmRleCA4OWE3MTUxYjNiZWIu
LmMyMGQ5ZjE5MTM1NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVuZGVyaW5nL2RlcHRoX2NsaXBfY2xhbXAuc3BlYy5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9y
ZW5kZXJpbmcvZGVwdGhfY2xpcF9jbGFtcC5zcGVjLmpzCkBAIC00MCwxMyArNDAsMTMgQEAgaGF2
ZSB1bmV4cGVjdGVkIHZhbHVlcyB0aGVuIGdldCBkcmF3biB0byB0aGUgY29sb3IgYnVmZmVyLCB3
aGljaCBpcyBsYXRlciBjaGVja2UKICAgKQogICAuZm4oYXN5bmMgdCA9PiB7CiAgICAgY29uc3Qg
eyBmb3JtYXQsIHVuY2xpcHBlZERlcHRoLCB3cml0ZURlcHRoLCBtdWx0aXNhbXBsZWQgfSA9IHQu
cGFyYW1zOworICAgIGNvbnN0IGluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKwog
ICAgIGF3YWl0IHQuc2VsZWN0RGV2aWNlT3JTa2lwVGVzdENhc2UoWwogICAgICAgdW5jbGlwcGVk
RGVwdGggPyAnZGVwdGgtY2xpcC1jb250cm9sJyA6IHVuZGVmaW5lZCwKLSAgICAgIGtUZXh0dXJl
Rm9ybWF0SW5mb1tmb3JtYXRdLmZlYXR1cmUsCisgICAgICBpbmZvLmZlYXR1cmUsCiAgICAgXSk7
CiAKLSAgICBjb25zdCBpbmZvID0ga1RleHR1cmVGb3JtYXRJbmZvW2Zvcm1hdF07Ci0KICAgICAv
KiogTnVtYmVyIG9mIGRlcHRoIHZhbHVlcyB0byB0ZXN0IGZvciBib3RoIHZlcnRleCBvdXRwdXQg
YW5kIGZyYWdfZGVwdGggb3V0cHV0LiAqLwogICAgIGNvbnN0IGtOdW1EZXB0aFZhbHVlcyA9IDg7
CiAgICAgLyoqIFRlc3QgZXZlcnkgY29tYmluYXRpb24gb2YgdmVydGV4IG91dHB1dCBhbmQgZnJh
Z19kZXB0aCBvdXRwdXQuICovCkBAIC04Myw4ICs4Myw4IEBAIGhhdmUgdW5leHBlY3RlZCB2YWx1
ZXMgdGhlbiBnZXQgZHJhd24gdG8gdGhlIGNvbG9yIGJ1ZmZlciwgd2hpY2ggaXMgbGF0ZXIgY2hl
Y2tlCiAgICAgICAvLy8vLy8vLyAiVGVzdCIgZW50cnkgcG9pbnRzCiAKICAgICAgIHN0cnVjdCBW
RlRlc3QgewotICAgICAgICBAYnVpbHRpbihwb3NpdGlvbikgcG9zOiB2ZWM0PGYzMj47Ci0gICAg
ICAgIEBsb2NhdGlvbigwKSBAaW50ZXJwb2xhdGUoZmxhdCkgdmVydGV4SW5kZXg6IHUzMjsKKyAg
ICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvczogdmVjNDxmMzI+LAorICAgICAgICBAbG9jYXRp
b24oMCkgQGludGVycG9sYXRlKGZsYXQpIHZlcnRleEluZGV4OiB1MzIsCiAgICAgICB9OwogCiAg
ICAgICBAc3RhZ2UodmVydGV4KQpAQCAtOTgsNyArOTgsNyBAQCBoYXZlIHVuZXhwZWN0ZWQgdmFs
dWVzIHRoZW4gZ2V0IGRyYXduIHRvIHRoZSBjb2xvciBidWZmZXIsIHdoaWNoIGlzIGxhdGVyIGNo
ZWNrZQogICAgICAgc3RydWN0IE91dHB1dCB7CiAgICAgICAgIC8vIEVhY2ggZnJhZ21lbnQgKHRo
YXQgZGlkbid0IGdldCBjbGlwcGVkKSB3cml0ZXMgaW50byBvbmUgZWxlbWVudCBvZiB0aGlzIG91
dHB1dC4KICAgICAgICAgLy8gKEFueXRoaW5nIHRoYXQgZG9lc24ndCBnZXQgd3JpdHRlbiBpcyBh
bHJlYWR5IHplcm8uKQotICAgICAgICBmcmFnSW5wdXRaRGlmZjogYXJyYXk8ZjMyLCAke2tOdW1U
ZXN0UG9pbnRzfT47CisgICAgICAgIGZyYWdJbnB1dFpEaWZmOiBhcnJheTxmMzIsICR7a051bVRl
c3RQb2ludHN9PgogICAgICAgfTsKICAgICAgIEBncm91cCgwKSBAYmluZGluZygwKSB2YXIgPHN0
b3JhZ2UsIHJlYWRfd3JpdGU+IG91dHB1dDogT3V0cHV0OwogCkBAIC0xMjAsOCArMTIwLDggQEAg
aGF2ZSB1bmV4cGVjdGVkIHZhbHVlcyB0aGVuIGdldCBkcmF3biB0byB0aGUgY29sb3IgYnVmZmVy
LCB3aGljaCBpcyBsYXRlciBjaGVja2UKICAgICAgIC8vLy8vLy8vICJDaGVjayIgZW50cnkgcG9p
bnRzCiAKICAgICAgIHN0cnVjdCBWRkNoZWNrIHsKLSAgICAgICAgQGJ1aWx0aW4ocG9zaXRpb24p
IHBvczogdmVjNDxmMzI+OwotICAgICAgICBAbG9jYXRpb24oMCkgQGludGVycG9sYXRlKGZsYXQp
IHZlcnRleEluZGV4OiB1MzI7CisgICAgICAgIEBidWlsdGluKHBvc2l0aW9uKSBwb3M6IHZlYzQ8
ZjMyPiwKKyAgICAgICAgQGxvY2F0aW9uKDApIEBpbnRlcnBvbGF0ZShmbGF0KSB2ZXJ0ZXhJbmRl
eDogdTMyLAogICAgICAgfTsKIAogICAgICAgQHN0YWdlKHZlcnRleCkKQEAgLTEzNCw4ICsxMzQs
OCBAQCBoYXZlIHVuZXhwZWN0ZWQgdmFsdWVzIHRoZW4gZ2V0IGRyYXduIHRvIHRoZSBjb2xvciBi
dWZmZXIsIHdoaWNoIGlzIGxhdGVyIGNoZWNrZQogICAgICAgfQogCiAgICAgICBzdHJ1Y3QgRkNo
ZWNrIHsKLSAgICAgICAgQGJ1aWx0aW4oZnJhZ19kZXB0aCkgZGVwdGg6IGYzMjsKLSAgICAgICAg
QGxvY2F0aW9uKDApIGNvbG9yOiBmMzI7CisgICAgICAgIEBidWlsdGluKGZyYWdfZGVwdGgpIGRl
cHRoOiBmMzIsCisgICAgICAgIEBsb2NhdGlvbigwKSBjb2xvcjogZjMyLAogICAgICAgfTsKIAog
ICAgICAgQHN0YWdlKGZyYWdtZW50KQpAQCAtMjU0LDkgKzI1NCw5IEBAIGhhdmUgdW5leHBlY3Rl
ZCB2YWx1ZXMgdGhlbiBnZXQgZHJhd24gdG8gdGhlIGNvbG9yIGJ1ZmZlciwgd2hpY2ggaXMgbGF0
ZXIgY2hlY2tlCiAgICAgICAgICAgZGVwdGhDbGVhclZhbHVlOiAwLjUsIC8vIFdpbGwgc2VlIHRo
aXMgZGVwdGggdmFsdWUgaWYgdGhlIGZyYWdtZW50IHdhcyBjbGlwcGVkLgogICAgICAgICAgIGRl
cHRoTG9hZE9wOiAnY2xlYXInLAogICAgICAgICAgIGRlcHRoU3RvcmVPcDogJ3N0b3JlJywKLSAg
ICAgICAgICBzdGVuY2lsQ2xlYXJWYWx1ZTogMCwKLSAgICAgICAgICBzdGVuY2lsTG9hZE9wOiAn
Y2xlYXInLAotICAgICAgICAgIHN0ZW5jaWxTdG9yZU9wOiAnZGlzY2FyZCcsCisgICAgICAgICAg
c3RlbmNpbENsZWFyVmFsdWU6IGluZm8uc3RlbmNpbCA/IDAgOiB1bmRlZmluZWQsCisgICAgICAg
ICAgc3RlbmNpbExvYWRPcDogaW5mby5zdGVuY2lsID8gJ2NsZWFyJyA6IHVuZGVmaW5lZCwKKyAg
ICAgICAgICBzdGVuY2lsU3RvcmVPcDogaW5mby5zdGVuY2lsID8gJ2Rpc2NhcmQnIDogdW5kZWZp
bmVkLAogICAgICAgICB9LAogICAgICAgfSk7CiAKQEAgLTI4OCw5ICsyODgsOSBAQCBoYXZlIHVu
ZXhwZWN0ZWQgdmFsdWVzIHRoZW4gZ2V0IGRyYXduIHRvIHRoZSBjb2xvciBidWZmZXIsIHdoaWNo
IGlzIGxhdGVyIGNoZWNrZQogICAgICAgICAgIHZpZXc6IGRzVGV4dHVyZVZpZXcsCiAgICAgICAg
ICAgZGVwdGhMb2FkT3A6ICdsb2FkJywKICAgICAgICAgICBkZXB0aFN0b3JlT3A6ICdzdG9yZScs
Ci0gICAgICAgICAgc3RlbmNpbENsZWFyVmFsdWU6IDAsCi0gICAgICAgICAgc3RlbmNpbExvYWRP
cDogJ2NsZWFyJywKLSAgICAgICAgICBzdGVuY2lsU3RvcmVPcDogJ2Rpc2NhcmQnLAorICAgICAg
ICAgIHN0ZW5jaWxDbGVhclZhbHVlOiBpbmZvLnN0ZW5jaWwgPyAwIDogdW5kZWZpbmVkLAorICAg
ICAgICAgIHN0ZW5jaWxMb2FkT3A6IGluZm8uc3RlbmNpbCA/ICdjbGVhcicgOiB1bmRlZmluZWQs
CisgICAgICAgICAgc3RlbmNpbFN0b3JlT3A6IGluZm8uc3RlbmNpbCA/ICdkaXNjYXJkJyA6IHVu
ZGVmaW5lZCwKICAgICAgICAgfSwKICAgICAgIH0pOwogCkBAIC0zNTksOSArMzU5LDExIEBAIHRv
IGJlIGVtcHR5LmAKICAgKQogICAuZm4oYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgeyBmb3JtYXQs
IHVuY2xpcHBlZERlcHRoLCBtdWx0aXNhbXBsZWQgfSA9IHQucGFyYW1zOworICAgIGNvbnN0IGlu
Zm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKwogICAgIGF3YWl0IHQuc2VsZWN0RGV2
aWNlT3JTa2lwVGVzdENhc2UoWwogICAgICAgdW5jbGlwcGVkRGVwdGggPyAnZGVwdGgtY2xpcC1j
b250cm9sJyA6IHVuZGVmaW5lZCwKLSAgICAgIGtUZXh0dXJlRm9ybWF0SW5mb1tmb3JtYXRdLmZl
YXR1cmUsCisgICAgICBpbmZvLmZlYXR1cmUsCiAgICAgXSk7CiAKICAgICBjb25zdCBrTnVtRGVw
dGhWYWx1ZXMgPSA4OwpAQCAtMzgyLDggKzM4NCw4IEBAIHRvIGJlIGVtcHR5LmAKICAgICAgIH0K
IAogICAgICAgc3RydWN0IFZGIHsKLSAgICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvczogdmVj
NDxmMzI+OwotICAgICAgICBAbG9jYXRpb24oMCkgQGludGVycG9sYXRlKGZsYXQpIHZlcnRleElu
ZGV4OiB1MzI7CisgICAgICAgIEBidWlsdGluKHBvc2l0aW9uKSBwb3M6IHZlYzQ8ZjMyPiwKKyAg
ICAgICAgQGxvY2F0aW9uKDApIEBpbnRlcnBvbGF0ZShmbGF0KSB2ZXJ0ZXhJbmRleDogdTMyLAog
ICAgICAgfTsKIAogICAgICAgQHN0YWdlKHZlcnRleCkKQEAgLTQwMiw4ICs0MDQsOCBAQCB0byBi
ZSBlbXB0eS5gCiAgICAgICB9CiAKICAgICAgIHN0cnVjdCBGVGVzdCB7Ci0gICAgICAgIEBidWls
dGluKGZyYWdfZGVwdGgpIGRlcHRoOiBmMzI7Ci0gICAgICAgIEBsb2NhdGlvbigwKSBjb2xvcjog
ZjMyOworICAgICAgICBAYnVpbHRpbihmcmFnX2RlcHRoKSBkZXB0aDogZjMyLAorICAgICAgICBA
bG9jYXRpb24oMCkgY29sb3I6IGYzMiwKICAgICAgIH07CiAKICAgICAgIEBzdGFnZShmcmFnbWVu
dCkKQEAgLTUwNCw5ICs1MDYsOSBAQCB0byBiZSBlbXB0eS5gCiAgICAgICAgICAgdmlldzogZHNU
ZXh0dXJlVmlldywKICAgICAgICAgICBkZXB0aExvYWRPcDogJ2xvYWQnLAogICAgICAgICAgIGRl
cHRoU3RvcmVPcDogJ3N0b3JlJywKLSAgICAgICAgICBzdGVuY2lsQ2xlYXJWYWx1ZTogMCwKLSAg
ICAgICAgICBzdGVuY2lsTG9hZE9wOiAnY2xlYXInLAotICAgICAgICAgIHN0ZW5jaWxTdG9yZU9w
OiAnZGlzY2FyZCcsCisgICAgICAgICAgc3RlbmNpbENsZWFyVmFsdWU6IGluZm8uc3RlbmNpbCA/
IDAgOiB1bmRlZmluZWQsCisgICAgICAgICAgc3RlbmNpbExvYWRPcDogaW5mby5zdGVuY2lsID8g
J2NsZWFyJyA6IHVuZGVmaW5lZCwKKyAgICAgICAgICBzdGVuY2lsU3RvcmVPcDogaW5mby5zdGVu
Y2lsID8gJ2Rpc2NhcmQnIDogdW5kZWZpbmVkLAogICAgICAgICB9LAogICAgICAgfSk7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0
aW9uL3JlbmRlcmluZy9kcmF3LnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJpbmcvZHJhdy5zcGVjLmpzCmluZGV4IGQ3Zjhi
OGUyMWM5MC4uMmQ5MzZkNWIwMDM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZW5kZXJpbmcvZHJhdy5zcGVjLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3JlbmRl
cmluZy9kcmF3LnNwZWMuanMKQEAgLTc4LDkgKzc4LDkgQEAgUGFyYW1zOgogICAgIGNvbnN0IHZl
cnRleE1vZHVsZSA9IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICBjb2RlOiBg
CiBzdHJ1Y3QgSW5wdXRzIHsKLSAgQGJ1aWx0aW4odmVydGV4X2luZGV4KSB2ZXJ0ZXhfaW5kZXgg
OiB1MzI7Ci0gIEBidWlsdGluKGluc3RhbmNlX2luZGV4KSBpbnN0YW5jZV9pZCA6IHUzMjsKLSAg
QGxvY2F0aW9uKDApIHZlcnRleFBvc2l0aW9uIDogdmVjMjxmMzI+OworICBAYnVpbHRpbih2ZXJ0
ZXhfaW5kZXgpIHZlcnRleF9pbmRleCA6IHUzMiwKKyAgQGJ1aWx0aW4oaW5zdGFuY2VfaW5kZXgp
IGluc3RhbmNlX2lkIDogdTMyLAorICBAbG9jYXRpb24oMCkgdmVydGV4UG9zaXRpb24gOiB2ZWMy
PGYzMj4sCiB9OwogCiBAc3RhZ2UodmVydGV4KSBmbiB2ZXJ0X21haW4oaW5wdXQgOiBJbnB1dHMK
QEAgLTEwMyw3ICsxMDMsNyBAQCBzdHJ1Y3QgSW5wdXRzIHsKICAgICBjb25zdCBmcmFnbWVudE1v
ZHVsZSA9IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICBjb2RlOiBgCiBzdHJ1
Y3QgT3V0cHV0IHsKLSAgdmFsdWUgOiB1MzI7CisgIHZhbHVlIDogdTMyCiB9OwogCiBAZ3JvdXAo
MCkgQGJpbmRpbmcoMCkgdmFyPHN0b3JhZ2UsIHJlYWRfd3JpdGU+IG91dHB1dCA6IE91dHB1dDsK
QEAgLTUyOSwxNyArNTI5LDE3IEBAIGcudGVzdCgndmVydGV4X2F0dHJpYnV0ZXMsYmFzaWMnKQog
ICAgICAgICBtb2R1bGU6IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICAgICAg
Y29kZTogYAogc3RydWN0IElucHV0cyB7Ci0gIEBidWlsdGluKHZlcnRleF9pbmRleCkgdmVydGV4
SW5kZXggOiB1MzI7Ci0gIEBidWlsdGluKGluc3RhbmNlX2luZGV4KSBpbnN0YW5jZUluZGV4IDog
dTMyOwotJHt2ZXJ0ZXhJbnB1dFNoYWRlckxvY2F0aW9ucy5tYXAoaSA9PiBgICBAbG9jYXRpb24o
JHtpfSkgYXR0cmliJHtpfSA6ICR7d2dzbEZvcm1hdH07YCkuam9pbignXG4nKX0KKyAgQGJ1aWx0
aW4odmVydGV4X2luZGV4KSB2ZXJ0ZXhJbmRleCA6IHUzMiwKKyAgQGJ1aWx0aW4oaW5zdGFuY2Vf
aW5kZXgpIGluc3RhbmNlSW5kZXggOiB1MzIsCiske3ZlcnRleElucHV0U2hhZGVyTG9jYXRpb25z
Lm1hcChpID0+IGAgIEBsb2NhdGlvbigke2l9KSBhdHRyaWIke2l9IDogJHt3Z3NsRm9ybWF0fSxg
KS5qb2luKCdcbicpfQogfTsKIAogc3RydWN0IE91dHB1dHMgewotICBAYnVpbHRpbihwb3NpdGlv
bikgUG9zaXRpb24gOiB2ZWM0PGYzMj47CisgIEBidWlsdGluKHBvc2l0aW9uKSBQb3NpdGlvbiA6
IHZlYzQ8ZjMyPiwKICR7aW50ZXJTdGFnZVNjYWxhclNoYWRlckxvY2F0aW9ucwotICAubWFwKGkg
PT4gYCAgQGxvY2F0aW9uKCR7aX0pIEBpbnRlcnBvbGF0ZShmbGF0KSBvdXRBdHRyaWIke2l9IDog
JHt3Z3NsRm9ybWF0fTtgKQorICAubWFwKGkgPT4gYCAgQGxvY2F0aW9uKCR7aX0pIEBpbnRlcnBv
bGF0ZShmbGF0KSBvdXRBdHRyaWIke2l9IDogJHt3Z3NsRm9ybWF0fSxgKQogICAuam9pbignXG4n
KX0KLSAgQGxvY2F0aW9uKCR7aW50ZXJTdGFnZVNjYWxhclNoYWRlckxvY2F0aW9ucy5sZW5ndGh9
KSBAaW50ZXJwb2xhdGUoZmxhdCkgcHJpbWl0aXZlSWQgOiB1MzI7CisgIEBsb2NhdGlvbigke2lu
dGVyU3RhZ2VTY2FsYXJTaGFkZXJMb2NhdGlvbnMubGVuZ3RofSkgQGludGVycG9sYXRlKGZsYXQp
IHByaW1pdGl2ZUlkIDogdTMyLAogJHthY2N1bXVsYXRlVmFyaWFibGVEZWNsYXJhdGlvbnNJblZl
cnRleFNoYWRlcn0KIH07CiAKQEAgLTU2NCwxNyArNTY0LDE3IEBAICR7YWNjdW11bGF0ZVZhcmlh
YmxlQXNzaWdubWVudHNJblZlcnRleFNoYWRlcn0KICAgICAgICAgICBjb2RlOiBgCiBzdHJ1Y3Qg
SW5wdXRzIHsKICR7aW50ZXJTdGFnZVNjYWxhclNoYWRlckxvY2F0aW9ucwotICAubWFwKGkgPT4g
YCAgQGxvY2F0aW9uKCR7aX0pIEBpbnRlcnBvbGF0ZShmbGF0KSBhdHRyaWIke2l9IDogJHt3Z3Ns
Rm9ybWF0fTtgKQorICAubWFwKGkgPT4gYCAgQGxvY2F0aW9uKCR7aX0pIEBpbnRlcnBvbGF0ZShm
bGF0KSBhdHRyaWIke2l9IDogJHt3Z3NsRm9ybWF0fSxgKQogICAuam9pbignXG4nKX0KLSAgQGxv
Y2F0aW9uKCR7aW50ZXJTdGFnZVNjYWxhclNoYWRlckxvY2F0aW9ucy5sZW5ndGh9KSBAaW50ZXJw
b2xhdGUoZmxhdCkgcHJpbWl0aXZlSWQgOiB1MzI7CisgIEBsb2NhdGlvbigke2ludGVyU3RhZ2VT
Y2FsYXJTaGFkZXJMb2NhdGlvbnMubGVuZ3RofSkgQGludGVycG9sYXRlKGZsYXQpIHByaW1pdGl2
ZUlkIDogdTMyLAogJHthY2N1bXVsYXRlVmFyaWFibGVEZWNsYXJhdGlvbnNJbkZyYWdtZW50U2hh
ZGVyfQogfTsKIAogc3RydWN0IE91dFByaW1pdGl2ZSB7Ci0ke3ZlcnRleElucHV0U2hhZGVyTG9j
YXRpb25zLm1hcChpID0+IGAgIGF0dHJpYiR7aX0gOiAke3dnc2xGb3JtYXR9O2ApLmpvaW4oJ1xu
Jyl9Ciske3ZlcnRleElucHV0U2hhZGVyTG9jYXRpb25zLm1hcChpID0+IGAgIGF0dHJpYiR7aX0g
OiAke3dnc2xGb3JtYXR9LGApLmpvaW4oJ1xuJyl9CiB9Owogc3RydWN0IE91dEJ1ZmZlciB7Ci0g
IHByaW1pdGl2ZXMgOiBAc3RyaWRlKCR7dmVydGV4SW5wdXRTaGFkZXJMb2NhdGlvbnMubGVuZ3Ro
ICogNH0pIGFycmF5PE91dFByaW1pdGl2ZT47CisgIHByaW1pdGl2ZXMgOiBhcnJheTxPdXRQcmlt
aXRpdmU+CiB9OwogQGdyb3VwKDApIEBiaW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkX3dyaXRl
PiBvdXRCdWZmZXIgOiBPdXRCdWZmZXI7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3Jlc291cmNlX2luaXQvYnVmZmVyLnNw
ZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlv
bi9yZXNvdXJjZV9pbml0L2J1ZmZlci5zcGVjLmpzCmluZGV4IGMzN2FmMTU2NTk0Ni4uZjY5M2Qz
YTM1MmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
YXBpL29wZXJhdGlvbi9yZXNvdXJjZV9pbml0L2J1ZmZlci5zcGVjLmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3Jlc291cmNlX2luaXQv
YnVmZmVyLnNwZWMuanMKQEAgLTUwNiw3ICs1MDYsNyBAQCBnLnRlc3QoJ3VuaWZvcm1fYnVmZmVy
JykKICAgICBjb25zdCBjb21wdXRlU2hhZGVyTW9kdWxlID0gdC5kZXZpY2UuY3JlYXRlU2hhZGVy
TW9kdWxlKHsKICAgICAgIGNvZGU6IGAKICAgc3RydWN0IFVCTyB7Ci0gICAgICB2YWx1ZSA6IHZl
YzQ8dTMyPjsKKyAgICAgIHZhbHVlIDogdmVjNDx1MzI+CiAgIH07CiAgIEBncm91cCgwKSBAYmlu
ZGluZygwKSB2YXI8dW5pZm9ybT4gdWJvIDogVUJPOwogICBAZ3JvdXAoMCkgQGJpbmRpbmcoMSkg
dmFyIG91dEltYWdlIDogdGV4dHVyZV9zdG9yYWdlXzJkPHJnYmE4dW5vcm0sIHdyaXRlPjsKQEAg
LTU0MSw3ICs1NDEsNyBAQCBnLnRlc3QoJ3JlYWRvbmx5X3N0b3JhZ2VfYnVmZmVyJykKICAgICBj
b25zdCBjb21wdXRlU2hhZGVyTW9kdWxlID0gdC5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsK
ICAgICAgIGNvZGU6IGAKICAgICBzdHJ1Y3QgU1NCTyB7Ci0gICAgICAgIHZhbHVlIDogdmVjNDx1
MzI+OworICAgICAgICB2YWx1ZSA6IHZlYzQ8dTMyPgogICAgIH07CiAgICAgQGdyb3VwKDApIEBi
aW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkPiBzc2JvIDogU1NCTzsKICAgICBAZ3JvdXAoMCkg
QGJpbmRpbmcoMSkgdmFyIG91dEltYWdlIDogdGV4dHVyZV9zdG9yYWdlXzJkPHJnYmE4dW5vcm0s
IHdyaXRlPjsKQEAgLTU3Niw3ICs1NzYsNyBAQCBnLnRlc3QoJ3N0b3JhZ2VfYnVmZmVyJykKICAg
ICBjb25zdCBjb21wdXRlU2hhZGVyTW9kdWxlID0gdC5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxl
KHsKICAgICAgIGNvZGU6IGAKICAgICBzdHJ1Y3QgU1NCTyB7Ci0gICAgICAgIHZhbHVlIDogdmVj
NDx1MzI+OworICAgICAgICB2YWx1ZSA6IHZlYzQ8dTMyPgogICAgIH07CiAgICAgQGdyb3VwKDAp
IEBiaW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkX3dyaXRlPiBzc2JvIDogU1NCTzsKICAgICBA
Z3JvdXAoMCkgQGJpbmRpbmcoMSkgdmFyIG91dEltYWdlIDogdGV4dHVyZV9zdG9yYWdlXzJkPHJn
YmE4dW5vcm0sIHdyaXRlPjsKQEAgLTYwNyw4ICs2MDcsOCBAQCBnLnRlc3QoJ3ZlcnRleF9idWZm
ZXInKQogICAgICAgdC5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAgICAgY29kZTog
YAogICAgICAgc3RydWN0IFZlcnRleE91dCB7Ci0gICAgICAgIEBsb2NhdGlvbigwKSBjb2xvciA6
IHZlYzQ8ZjMyPjsKLSAgICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0aW9uIDogdmVjNDxm
MzI+OworICAgICAgICBAbG9jYXRpb24oMCkgY29sb3IgOiB2ZWM0PGYzMj4sCisgICAgICAgIEBi
dWlsdGluKHBvc2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8ZjMyPiwKICAgICAgIH07CiAKICAgICAg
IEBzdGFnZSh2ZXJ0ZXgpIGZuIG1haW4oQGxvY2F0aW9uKDApIHBvcyA6IHZlYzQ8ZjMyPikgLT4g
VmVydGV4T3V0IHsKQEAgLTY3Miw4ICs2NzIsOCBAQCBHUFVCdWZmZXIsIGFsbCB0aGUgY29udGVu
dHMgaW4gdGhhdCBHUFVCdWZmZXIgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHRvIDAuYAogICAgICAg
dC5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAgICAgY29kZTogYAogICAgIHN0cnVj
dCBWZXJ0ZXhPdXQgewotICAgICAgQGxvY2F0aW9uKDApIGNvbG9yIDogdmVjNDxmMzI+OwotICAg
ICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0aW9uIDogdmVjNDxmMzI+OworICAgICAgQGxvY2F0
aW9uKDApIGNvbG9yIDogdmVjNDxmMzI+LAorICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0
aW9uIDogdmVjNDxmMzI+LAogICAgIH07CiAKICAgICBAc3RhZ2UodmVydGV4KQpAQCAtNzQyLDgg
Kzc0Miw4IEBAIGhhdmUgYmVlbiBpbml0aWFsaXplZCB0byAwLmAKICAgICAgIHQuZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7CiAgICAgICAgIGNvZGU6IGAKICAgICBzdHJ1Y3QgVmVydGV4T3V0
IHsKLSAgICAgIEBsb2NhdGlvbigwKSBjb2xvciA6IHZlYzQ8ZjMyPjsKLSAgICAgIEBidWlsdGlu
KHBvc2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8ZjMyPjsKKyAgICAgIEBsb2NhdGlvbigwKSBjb2xv
ciA6IHZlYzQ8ZjMyPiwKKyAgICAgIEBidWlsdGluKHBvc2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8
ZjMyPiwKICAgICB9OwogCiAgICAgQHN0YWdlKHZlcnRleCkgZm4gbWFpbigpIC0+IFZlcnRleE91
dCB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L29wZXJhdGlvbi9yZXNvdXJjZV9pbml0L2NoZWNrX3RleHR1cmUvYnlfY29weS5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3Jlc291cmNlX2lu
aXQvY2hlY2tfdGV4dHVyZS9ieV9jb3B5LmpzCmluZGV4IGIwMDkxNmY3YmE3OC4uMmZiNGQ4MjE5
ODdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L29wZXJhdGlvbi9yZXNvdXJjZV9pbml0L2NoZWNrX3RleHR1cmUvYnlfY29weS5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZXNvdXJj
ZV9pbml0L2NoZWNrX3RleHR1cmUvYnlfY29weS5qcwpAQCAtMTMsNyArMTMsNyBAQCBleHBvcnQg
Y29uc3QgY2hlY2tDb250ZW50c0J5QnVmZmVyQ29weSA9ICh0LCBwYXJhbXMsIHRleHR1cmUsIHN0
YXRlLCBzdWJyZXNvdXJjZQogICAgICAgc2l6ZTogW3QudGV4dHVyZVdpZHRoLCB0LnRleHR1cmVI
ZWlnaHQsIHQudGV4dHVyZURlcHRoXSwKICAgICAgIGRpbWVuc2lvbjogcGFyYW1zLmRpbWVuc2lv
biwKICAgICAgIHNsaWNlOiBsYXllciwKLSAgICAgIGxheW91dDogeyBtaXBMZXZlbCB9LAorICAg
ICAgbGF5b3V0OiB7IG1pcExldmVsLCBhc3BlY3Q6IHBhcmFtcy5hc3BlY3QgfSwKICAgICAgIGV4
cDogdC5zdGF0ZVRvVGV4ZWxDb21wb25lbnRzW3N0YXRlXSwKICAgICB9KTsKICAgfQpAQCAtNDks
NiArNDksNyBAQCBleHBvcnQgY29uc3QgY2hlY2tDb250ZW50c0J5VGV4dHVyZUNvcHkgPSAodCwg
cGFyYW1zLCB0ZXh0dXJlLCBzdGF0ZSwgc3VicmVzb3VyYwogICAgIHQuZXhwZWN0U2luZ2xlQ29s
b3IoZHN0LCBmb3JtYXQsIHsKICAgICAgIHNpemU6IFt3aWR0aCwgaGVpZ2h0LCBkZXB0aF0sCiAg
ICAgICBleHA6IHQuc3RhdGVUb1RleGVsQ29tcG9uZW50c1tzdGF0ZV0sCisgICAgICBsYXlvdXQ6
IHsgbWlwTGV2ZWw6IDAsIGFzcGVjdDogcGFyYW1zLmFzcGVjdCB9LAogICAgIH0pOwogICB9CiB9
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9v
cGVyYXRpb24vcmVzb3VyY2VfaW5pdC9jaGVja190ZXh0dXJlL2J5X2RzX3Rlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZXNvdXJjZV9p
bml0L2NoZWNrX3RleHR1cmUvYnlfZHNfdGVzdC5qcwppbmRleCBlNTFkYTE0MDM1ZWUuLjIzYjE5
NzFjODkyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L2FwaS9vcGVyYXRpb24vcmVzb3VyY2VfaW5pdC9jaGVja190ZXh0dXJlL2J5X2RzX3Rlc3QuanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24v
cmVzb3VyY2VfaW5pdC9jaGVja190ZXh0dXJlL2J5X2RzX3Rlc3QuanMKQEAgLTEsNiArMSw3IEBA
CiAvKioKICAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9UIEVESVQuIFNvdXJjZTogaHR0cHM6Ly9n
aXRodWIuY29tL2dwdXdlYi9jdHMKICAqKi8gaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi4vLi4v
Li4vLi4vLi4vY29tbW9uL3V0aWwvdXRpbC5qcyc7CitpbXBvcnQgeyByZXNvbHZlUGVyQXNwZWN0
Rm9ybWF0IH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FwYWJpbGl0eV9pbmZvLmpzJzsKIGltcG9ydCB7
IHZpcnR1YWxNaXBTaXplIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC90ZXh0dXJlL2Jhc2UuanMn
OwogCiBmdW5jdGlvbiBtYWtlRnVsbHNjcmVlblZlcnRleE1vZHVsZShkZXZpY2UpIHsKQEAgLTMx
LDggKzMyLDggQEAgZnVuY3Rpb24gZ2V0RGVwdGhUZXN0RXF1YWxQaXBlbGluZSh0LCBmb3JtYXQs
IHNhbXBsZUNvdW50LCBleHBlY3RlZCkgewogICAgICAgbW9kdWxlOiB0LmRldmljZS5jcmVhdGVT
aGFkZXJNb2R1bGUoewogICAgICAgICBjb2RlOiBgCiAgICAgICAgIHN0cnVjdCBPdXRwdXRzIHsK
LSAgICAgICAgICBAYnVpbHRpbihmcmFnX2RlcHRoKSBGcmFnRGVwdGggOiBmMzI7Ci0gICAgICAg
ICAgQGxvY2F0aW9uKDApIG91dFN1Y2Nlc3MgOiBmMzI7CisgICAgICAgICAgQGJ1aWx0aW4oZnJh
Z19kZXB0aCkgRnJhZ0RlcHRoIDogZjMyLAorICAgICAgICAgIEBsb2NhdGlvbigwKSBvdXRTdWNj
ZXNzIDogZjMyLAogICAgICAgICB9OwogCiAgICAgICAgIEBzdGFnZShmcmFnbWVudCkKQEAgLTEy
Myw2ICsxMjQsOCBAQCBjb25zdCBjaGVja0NvbnRlbnRzID0gKHR5cGUsIHQsIHBhcmFtcywgdGV4
dHVyZSwgc3RhdGUsIHN1YnJlc291cmNlUmFuZ2UpID0+IHsKICAgICB9CiAKICAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IHQuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgY29t
bWFuZEVuY29kZXIucHVzaERlYnVnR3JvdXAoJ2NoZWNrQ29udGVudHNXaXRoRGVwdGhTdGVuY2ls
Jyk7CisKICAgICBjb25zdCBwYXNzID0gY29tbWFuZEVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsK
ICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFsKICAgICAgICAgewpAQCAtMTM2LDIwICsxMzksMjEg
QEAgY29uc3QgY2hlY2tDb250ZW50cyA9ICh0eXBlLCB0LCBwYXJhbXMsIHRleHR1cmUsIHN0YXRl
LCBzdWJyZXNvdXJjZVJhbmdlKSA9PiB7CiAKICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQ6
IHsKICAgICAgICAgdmlldzogdGV4dHVyZS5jcmVhdGVWaWV3KHZpZXdEZXNjcmlwdG9yKSwKLSAg
ICAgICAgZGVwdGhTdG9yZU9wOiAnc3RvcmUnLAotICAgICAgICBkZXB0aExvYWRPcDogJ2xvYWQn
LAotICAgICAgICBzdGVuY2lsU3RvcmVPcDogJ3N0b3JlJywKLSAgICAgICAgc3RlbmNpbExvYWRP
cDogJ2xvYWQnLAorICAgICAgICBkZXB0aFN0b3JlT3A6IHR5cGUgPT09ICdkZXB0aCcgPyAnc3Rv
cmUnIDogdW5kZWZpbmVkLAorICAgICAgICBkZXB0aExvYWRPcDogdHlwZSA9PT0gJ2RlcHRoJyA/
ICdsb2FkJyA6IHVuZGVmaW5lZCwKKyAgICAgICAgc3RlbmNpbFN0b3JlT3A6IHR5cGUgPT09ICdz
dGVuY2lsJyA/ICdzdG9yZScgOiB1bmRlZmluZWQsCisgICAgICAgIHN0ZW5jaWxMb2FkT3A6IHR5
cGUgPT09ICdzdGVuY2lsJyA/ICdsb2FkJyA6IHVuZGVmaW5lZCwKICAgICAgIH0sCiAgICAgfSk7
CiAKKyAgICBjb25zdCBwaXBlbGluZURTRm9ybWF0ID0gcmVzb2x2ZVBlckFzcGVjdEZvcm1hdChw
YXJhbXMuZm9ybWF0LCBwYXJhbXMuYXNwZWN0KTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAg
IGNhc2UgJ2RlcHRoJzogewogICAgICAgICBjb25zdCBleHBlY3RlZERlcHRoID0gdC5zdGF0ZVRv
VGV4ZWxDb21wb25lbnRzW3N0YXRlXS5EZXB0aDsKICAgICAgICAgYXNzZXJ0KGV4cGVjdGVkRGVw
dGggIT09IHVuZGVmaW5lZCk7CiAKICAgICAgICAgcGFzcy5zZXRQaXBlbGluZSgKLSAgICAgICAg
ICBnZXREZXB0aFRlc3RFcXVhbFBpcGVsaW5lKHQsIHBhcmFtcy5mb3JtYXQsIHBhcmFtcy5zYW1w
bGVDb3VudCwgZXhwZWN0ZWREZXB0aCkKKyAgICAgICAgICBnZXREZXB0aFRlc3RFcXVhbFBpcGVs
aW5lKHQsIHBpcGVsaW5lRFNGb3JtYXQsIHBhcmFtcy5zYW1wbGVDb3VudCwgZXhwZWN0ZWREZXB0
aCkKICAgICAgICAgKTsKIAogICAgICAgICBicmVhazsKQEAgLTE1OSw3ICsxNjMsNyBAQCBjb25z
dCBjaGVja0NvbnRlbnRzID0gKHR5cGUsIHQsIHBhcmFtcywgdGV4dHVyZSwgc3RhdGUsIHN1YnJl
c291cmNlUmFuZ2UpID0+IHsKICAgICAgICAgY29uc3QgZXhwZWN0ZWRTdGVuY2lsID0gdC5zdGF0
ZVRvVGV4ZWxDb21wb25lbnRzW3N0YXRlXS5TdGVuY2lsOwogICAgICAgICBhc3NlcnQoZXhwZWN0
ZWRTdGVuY2lsICE9PSB1bmRlZmluZWQpOwogCi0gICAgICAgIHBhc3Muc2V0UGlwZWxpbmUoZ2V0
U3RlbmNpbFRlc3RFcXVhbFBpcGVsaW5lKHQsIHBhcmFtcy5mb3JtYXQsIHBhcmFtcy5zYW1wbGVD
b3VudCkpOworICAgICAgICBwYXNzLnNldFBpcGVsaW5lKGdldFN0ZW5jaWxUZXN0RXF1YWxQaXBl
bGluZSh0LCBwaXBlbGluZURTRm9ybWF0LCBwYXJhbXMuc2FtcGxlQ291bnQpKTsKICAgICAgICAg
cGFzcy5zZXRTdGVuY2lsUmVmZXJlbmNlKGV4cGVjdGVkU3RlbmNpbCk7CiAgICAgICAgIGJyZWFr
OwogICAgICAgfQpAQCAtMTY4LDYgKzE3Miw3IEBAIGNvbnN0IGNoZWNrQ29udGVudHMgPSAodHlw
ZSwgdCwgcGFyYW1zLCB0ZXh0dXJlLCBzdGF0ZSwgc3VicmVzb3VyY2VSYW5nZSkgPT4gewogICAg
IHBhc3MuZHJhdygzKTsKICAgICBwYXNzLmVuZCgpOwogCisgICAgY29tbWFuZEVuY29kZXIucG9w
RGVidWdHcm91cCgpOwogICAgIHQucXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2go
KV0pOwogCiAgICAgdC5leHBlY3RTaW5nbGVDb2xvcihyZXNvbHZlVGV4dHVyZSB8fCByZW5kZXJU
ZXh0dXJlLCAncjh1bm9ybScsIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3Jlc291cmNlX2luaXQvY2hlY2tfdGV4dHVyZS9i
eV9zYW1wbGluZy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
b3BlcmF0aW9uL3Jlc291cmNlX2luaXQvY2hlY2tfdGV4dHVyZS9ieV9zYW1wbGluZy5qcwppbmRl
eCAzODI5YTlmZDhmMTguLmEzYTc3MGU4YmJiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVzb3VyY2VfaW5pdC9jaGVja190
ZXh0dXJlL2J5X3NhbXBsaW5nLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3Jlc291cmNlX2luaXQvY2hlY2tfdGV4dHVyZS9ieV9zYW1w
bGluZy5qcwpAQCAtNTIsMTQgKzUyLDE0IEBAIGV4cG9ydCBjb25zdCBjaGVja0NvbnRlbnRzQnlT
YW1wbGluZyA9ICh0LCBwYXJhbXMsIHRleHR1cmUsIHN0YXRlLCBzdWJyZXNvdXJjZVJhCiAgICAg
ICAgIG1vZHVsZTogdC5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAgICAgICBjb2Rl
OiBgCiAgICAgICAgICAgICBzdHJ1Y3QgQ29uc3RhbnRzIHsKLSAgICAgICAgICAgICAgbGV2ZWwg
OiBpMzI7CisgICAgICAgICAgICAgIGxldmVsIDogaTMyCiAgICAgICAgICAgICB9OwogCiAgICAg
ICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoMCkgdmFyPHVuaWZvcm0+IGNvbnN0YW50cyA6IENv
bnN0YW50czsKICAgICAgICAgICAgIEBncm91cCgwKSBAYmluZGluZygxKSB2YXIgbXlUZXh0dXJl
IDogdGV4dHVyZSR7X211bHRpc2FtcGxlZH0ke194ZH08JHtzaGFkZXJUeXBlfT47CiAKICAgICAg
ICAgICAgIHN0cnVjdCBSZXN1bHQgewotICAgICAgICAgICAgICB2YWx1ZXMgOiBAc3RyaWRlKDQp
IGFycmF5PCR7c2hhZGVyVHlwZX0+OworICAgICAgICAgICAgICB2YWx1ZXMgOiBhcnJheTwke3No
YWRlclR5cGV9PgogICAgICAgICAgICAgfTsKICAgICAgICAgICAgIEBncm91cCgwKSBAYmluZGlu
ZygzKSB2YXI8c3RvcmFnZSwgcmVhZF93cml0ZT4gcmVzdWx0IDogUmVzdWx0OwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9y
ZXNvdXJjZV9pbml0L3RleHR1cmVfemVyby5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVzb3VyY2VfaW5pdC90ZXh0dXJlX3plcm8u
c3BlYy5qcwppbmRleCA0ZGVjNmI1MGFmYjQuLmNkZDg4N2E3ZWNkMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcmVzb3VyY2Vf
aW5pdC90ZXh0dXJlX3plcm8uc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9yZXNvdXJjZV9pbml0L3RleHR1cmVfemVyby5zcGVj
LmpzCkBAIC0yNzgsNiArMjc4LDggQEAgZXhwb3J0IGNsYXNzIFRleHR1cmVaZXJvSW5pdFRlc3Qg
ZXh0ZW5kcyBHUFVUZXN0IHsKIAogICBpbml0aWFsaXplV2l0aFN0b3JlT3Aoc3RhdGUsIHRleHR1
cmUsIHN1YnJlc291cmNlUmFuZ2UpIHsKICAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IHRoaXMu
ZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgY29tbWFuZEVuY29kZXIucHVzaERl
YnVnR3JvdXAoJ2luaXRpYWxpemVXaXRoU3RvcmVPcCcpOworCiAgICAgZm9yIChjb25zdCB2aWV3
RGVzY3JpcHRvciBvZiB0aGlzLmdlbmVyYXRlVGV4dHVyZVZpZXdEZXNjcmlwdG9yc0ZvclJlbmRl
cmluZygKICAgICAgIHRoaXMucC5hc3BlY3QsCiAgICAgICBzdWJyZXNvdXJjZVJhbmdlCkBAIC0z
MDAsMTIgKzMwMiwxMiBAQCBleHBvcnQgY2xhc3MgVGV4dHVyZVplcm9Jbml0VGVzdCBleHRlbmRz
IEdQVVRlc3QgewogICAgICAgICAgIHZpZXc6IHRleHR1cmUuY3JlYXRlVmlldyh2aWV3RGVzY3Jp
cHRvciksCiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKGtUZXh0dXJlRm9ybWF0SW5mb1t0aGlz
LnAuZm9ybWF0XS5kZXB0aCkgeworICAgICAgICBpZiAoa1RleHR1cmVGb3JtYXRJbmZvW3RoaXMu
cC5mb3JtYXRdLmRlcHRoICYmIHRoaXMucC5hc3BlY3QgIT09ICdzdGVuY2lsLW9ubHknKSB7CiAg
ICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aENsZWFyVmFsdWUgPSBpbml0aWFs
aXplZFN0YXRlQXNEZXB0aFtzdGF0ZV07CiAgICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5kZXB0aExvYWRPcCA9ICdjbGVhcic7CiAgICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5kZXB0aFN0b3JlT3AgPSAnc3RvcmUnOwogICAgICAgICB9Ci0gICAgICAgIGlmIChrVGV4dHVy
ZUZvcm1hdEluZm9bdGhpcy5wLmZvcm1hdF0uc3RlbmNpbCkgeworICAgICAgICBpZiAoa1RleHR1
cmVGb3JtYXRJbmZvW3RoaXMucC5mb3JtYXRdLnN0ZW5jaWwgJiYgdGhpcy5wLmFzcGVjdCAhPT0g
J2RlcHRoLW9ubHknKSB7CiAgICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2ls
Q2xlYXJWYWx1ZSA9IGluaXRpYWxpemVkU3RhdGVBc1N0ZW5jaWxbc3RhdGVdOwogICAgICAgICAg
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbExvYWRPcCA9ICdjbGVhcic7CiAgICAgICAg
ICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsU3RvcmVPcCA9ICdzdG9yZSc7CkBAIC0z
MTgsNiArMzIwLDggQEAgZXhwb3J0IGNsYXNzIFRleHR1cmVaZXJvSW5pdFRlc3QgZXh0ZW5kcyBH
UFVUZXN0IHsKICAgICAgICAgICAuZW5kKCk7CiAgICAgICB9CiAgICAgfQorCisgICAgY29tbWFu
ZEVuY29kZXIucG9wRGVidWdHcm91cCgpOwogICAgIHRoaXMucXVldWUuc3VibWl0KFtjb21tYW5k
RW5jb2Rlci5maW5pc2goKV0pOwogICB9CiAKQEAgLTM4MSw2ICszODUsNyBAQCBleHBvcnQgY2xh
c3MgVGV4dHVyZVplcm9Jbml0VGVzdCBleHRlbmRzIEdQVVRlc3QgewogCiAgIGRpc2NhcmRUZXh0
dXJlKHRleHR1cmUsIHN1YnJlc291cmNlUmFuZ2UpIHsKICAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgY29tbWFuZEVuY29k
ZXIucHVzaERlYnVnR3JvdXAoJ2Rpc2NhcmRUZXh0dXJlJyk7CiAKICAgICBmb3IgKGNvbnN0IGRl
c2Mgb2YgdGhpcy5nZW5lcmF0ZVRleHR1cmVWaWV3RGVzY3JpcHRvcnNGb3JSZW5kZXJpbmcoCiAg
ICAgICB0aGlzLnAuYXNwZWN0LApAQCAtNDAzLDExICs0MDgsMTEgQEAgZXhwb3J0IGNsYXNzIFRl
eHR1cmVaZXJvSW5pdFRlc3QgZXh0ZW5kcyBHUFVUZXN0IHsKICAgICAgICAgICB2aWV3OiB0ZXh0
dXJlLmNyZWF0ZVZpZXcoZGVzYyksCiAgICAgICAgIH07CiAKLSAgICAgICAgaWYgKGtUZXh0dXJl
Rm9ybWF0SW5mb1t0aGlzLnAuZm9ybWF0XS5kZXB0aCkgeworICAgICAgICBpZiAoa1RleHR1cmVG
b3JtYXRJbmZvW3RoaXMucC5mb3JtYXRdLmRlcHRoICYmIHRoaXMucC5hc3BlY3QgIT09ICdzdGVu
Y2lsLW9ubHknKSB7CiAgICAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aExvYWRP
cCA9ICdsb2FkJzsKICAgICAgICAgICBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoU3RvcmVP
cCA9ICdkaXNjYXJkJzsKICAgICAgICAgfQotICAgICAgICBpZiAoa1RleHR1cmVGb3JtYXRJbmZv
W3RoaXMucC5mb3JtYXRdLnN0ZW5jaWwpIHsKKyAgICAgICAgaWYgKGtUZXh0dXJlRm9ybWF0SW5m
b1t0aGlzLnAuZm9ybWF0XS5zdGVuY2lsICYmIHRoaXMucC5hc3BlY3QgIT09ICdkZXB0aC1vbmx5
JykgewogICAgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbExvYWRPcCA9ICds
b2FkJzsKICAgICAgICAgICBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxTdG9yZU9wID0g
J2Rpc2NhcmQnOwogICAgICAgICB9CkBAIC00MTksNiArNDI0LDggQEAgZXhwb3J0IGNsYXNzIFRl
eHR1cmVaZXJvSW5pdFRlc3QgZXh0ZW5kcyBHUFVUZXN0IHsKICAgICAgICAgICAuZW5kKCk7CiAg
ICAgICB9CiAgICAgfQorCisgICAgY29tbWFuZEVuY29kZXIucG9wRGVidWdHcm91cCgpOwogICAg
IHRoaXMucXVldWUuc3VibWl0KFtjb21tYW5kRW5jb2Rlci5maW5pc2goKV0pOwogICB9CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJh
dGlvbi9zYW1wbGluZy9hbmlzb3Ryb3B5LnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9zYW1wbGluZy9hbmlzb3Ryb3B5LnNwZWMuanMK
aW5kZXggYjkwZTA3YzM0ODU5Li5lMDgzNjNlNGIwODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3NhbXBsaW5nL2FuaXNvdHJv
cHkuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L29wZXJhdGlvbi9zYW1wbGluZy9hbmlzb3Ryb3B5LnNwZWMuanMKQEAgLTYwLDggKzYwLDggQEAg
Y2xhc3MgU2FtcGxlckFuaXNvdHJvcGljRmlsdGVyaW5nU2xhbnRlZFBsYW5lVGVzdCBleHRlbmRz
IEdQVVRlc3QgewogICAgICAgICBtb2R1bGU6IHRoaXMuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7CiAgICAgICAgICAgY29kZTogYAogICAgICAgICAgICAgc3RydWN0IE91dHB1dHMgewotICAg
ICAgICAgICAgICBAYnVpbHRpbihwb3NpdGlvbikgUG9zaXRpb24gOiB2ZWM0PGYzMj47Ci0gICAg
ICAgICAgICAgIEBsb2NhdGlvbigwKSBmcmFnVVYgOiB2ZWMyPGYzMj47CisgICAgICAgICAgICAg
IEBidWlsdGluKHBvc2l0aW9uKSBQb3NpdGlvbiA6IHZlYzQ8ZjMyPiwKKyAgICAgICAgICAgICAg
QGxvY2F0aW9uKDApIGZyYWdVViA6IHZlYzI8ZjMyPiwKICAgICAgICAgICAgIH07CiAKICAgICAg
ICAgICAgIEBzdGFnZSh2ZXJ0ZXgpIGZuIG1haW4oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvZm9ybWF0
X3JlaW50ZXJwcmV0YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdGV4dHVyZV92aWV3L2Zvcm1hdF9yZWludGVycHJl
dGF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjdlZjIyZTlhNDMxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3RleHR1cmVfdmlldy9mb3JtYXRfcmVpbnRl
cnByZXRhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdGV4dHVy
ZV92aWV3L2Zvcm1hdF9yZWludGVycHJldGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvZm9ybWF0X3JlaW50
ZXJwcmV0YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmNiNmZmNWVhNzdjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3RleHR1cmVfdmlldy9mb3JtYXRfcmVpbnRlcnBy
ZXRhdGlvbi5odG1sCkBAIC0wLDAgKzEsNyBAQAorCisgICAgICAgICAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAg
ICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIi93ZWJncHUvY3RzLmh0dHBzLmh0bWw/cT13ZWJn
cHU6YXBpLG9wZXJhdGlvbix0ZXh0dXJlX3ZpZXcsZm9ybWF0X3JlaW50ZXJwcmV0YXRpb246KiI7
CisgICAgICAgICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgICAgICAKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvZm9ybWF0X3JlaW50ZXJwcmV0YXRpb24u
c3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0
aW9uL3RleHR1cmVfdmlldy9mb3JtYXRfcmVpbnRlcnByZXRhdGlvbi5zcGVjLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODM2YTAyNTQ2MDUwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRp
b24vdGV4dHVyZV92aWV3L2Zvcm1hdF9yZWludGVycHJldGF0aW9uLnNwZWMuanMKQEAgLTAsMCAr
MSwzNzEgQEAKKy8qKgorICogQVVUTy1HRU5FUkFURUQgLSBETyBOT1QgRURJVC4gU291cmNlOiBo
dHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cworICoqLyBleHBvcnQgY29uc3QgZGVzY3JpcHRp
b24gPSBgCitUZXN0IHRleHR1cmUgdmlld3MgY2FuIHJlaW50ZXJwcmV0IHRoZSBmb3JtYXQgb2Yg
dGhlIG9yaWdpbmFsIHRleHR1cmUuCitgOworaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20g
Jy4uLy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7CitpbXBvcnQgewor
ICBrUmVuZGVyYWJsZUNvbG9yVGV4dHVyZUZvcm1hdHMsCisgIGtSZWd1bGFyVGV4dHVyZUZvcm1h
dHMsCisgIHZpZXdDb21wYXRpYmxlLAorfSBmcm9tICcuLi8uLi8uLi9jYXBhYmlsaXR5X2luZm8u
anMnOworaW1wb3J0IHsgR1BVVGVzdCB9IGZyb20gJy4uLy4uLy4uL2dwdV90ZXN0LmpzJzsKK2lt
cG9ydCB7IFRleGVsVmlldyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdGV4dHVyZS90ZXhlbF92aWV3
LmpzJzsKK2ltcG9ydCB7IHRleHR1cmVDb250ZW50SXNPS0J5VDJCIH0gZnJvbSAnLi4vLi4vLi4v
dXRpbC90ZXh0dXJlL3RleHR1cmVfb2suanMnOworCitleHBvcnQgY29uc3QgZyA9IG1ha2VUZXN0
R3JvdXAoR1BVVGVzdCk7CisKK2NvbnN0IGtDb2xvcnMgPSBbCisgIHsgUjogMS4wLCBHOiAwLjAs
IEI6IDAuMCwgQTogMC44IH0sCisgIHsgUjogMC4wLCBHOiAxLjAsIEI6IDAuMCwgQTogMC43IH0s
CisgIHsgUjogMC4wLCBHOiAwLjAsIEI6IDAuMCwgQTogMC42IH0sCisgIHsgUjogMC4wLCBHOiAw
LjAsIEI6IDAuMCwgQTogMC41IH0sCisgIHsgUjogMS4wLCBHOiAxLjAsIEI6IDEuMCwgQTogMC40
IH0sCisgIHsgUjogMC43LCBHOiAwLjAsIEI6IDAuMCwgQTogMC4zIH0sCisgIHsgUjogMC4wLCBH
OiAwLjgsIEI6IDAuMCwgQTogMC4yIH0sCisgIHsgUjogMC4wLCBHOiAwLjAsIEI6IDAuOSwgQTog
MC4xIH0sCisgIHsgUjogMC4xLCBHOiAwLjIsIEI6IDAuMCwgQTogMC4zIH0sCisgIHsgUjogMC40
LCBHOiAwLjMsIEI6IDAuNiwgQTogMC44IH0sCitdOworCitjb25zdCBrVGV4dHVyZVNpemUgPSAx
NjsKKworZnVuY3Rpb24gbWFrZUlucHV0VGV4ZWxWaWV3KGZvcm1hdCkgeworICByZXR1cm4gVGV4
ZWxWaWV3LmZyb21UZXhlbHNBc0NvbG9ycygKKyAgICBmb3JtYXQsCisgICAgY29vcmRzID0+IHsK
KyAgICAgIGNvbnN0IHBpeGVsUG9zID0gY29vcmRzLnkgKiBrVGV4dHVyZVNpemUgKyBjb29yZHMu
eDsKKyAgICAgIHJldHVybiBrQ29sb3JzW3BpeGVsUG9zICUga0NvbG9ycy5sZW5ndGhdOworICAg
IH0sCisgICAgeyBjbGFtcFRvRm9ybWF0UmFuZ2U6IHRydWUgfQorICApOworfQorCitmdW5jdGlv
biBtYWtlQmxpdFBpcGVsaW5lKGRldmljZSwgZm9ybWF0LCBtdWx0aXNhbXBsZSkgeworICByZXR1
cm4gZGV2aWNlLmNyZWF0ZVJlbmRlclBpcGVsaW5lKHsKKyAgICB2ZXJ0ZXg6IHsKKyAgICAgIG1v
ZHVsZTogZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CisgICAgICAgIGNvZGU6IGAKKyAgICAg
ICAgICBAc3RhZ2UodmVydGV4KSBmbiBtYWluKEBidWlsdGluKHZlcnRleF9pbmRleCkgVmVydGV4
SW5kZXggOiB1MzIpIC0+IEBidWlsdGluKHBvc2l0aW9uKSB2ZWM0PGYzMj4geworICAgICAgICAg
ICAgdmFyIHBvcyA9IGFycmF5PHZlYzI8ZjMyPiwgNj4oCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVjMjxmMzI+KC0xLjAsIC0xLjApLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzI8ZjMyPigtMS4wLCAgMS4wKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMyPGYzMj4oIDEuMCwgLTEuMCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjMjxmMzI+KC0xLjAsICAx
LjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzI8ZjMyPigg
MS4wLCAtMS4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWMy
PGYzMj4oIDEuMCwgIDEuMCkpOworICAgICAgICAgICAgcmV0dXJuIHZlYzQ8ZjMyPihwb3NbVmVy
dGV4SW5kZXhdLCAwLjAsIDEuMCk7CisgICAgICAgICAgfWAsCisgICAgICB9KSwKKworICAgICAg
ZW50cnlQb2ludDogJ21haW4nLAorICAgIH0sCisKKyAgICBmcmFnbWVudDogeworICAgICAgbW9k
dWxlOgorICAgICAgICBtdWx0aXNhbXBsZS5zYW1wbGUgPiAxCisgICAgICAgICAgPyBkZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHsKKyAgICAgICAgICAgICAgY29kZTogYAorICAgICAgICAgICAg
QGdyb3VwKDApIEBiaW5kaW5nKDApIHZhciBzcmM6IHRleHR1cmVfbXVsdGlzYW1wbGVkXzJkPGYz
Mj47CisgICAgICAgICAgICBAc3RhZ2UoZnJhZ21lbnQpIGZuIG1haW4oQGJ1aWx0aW4ocG9zaXRp
b24pIGNvb3JkOiB2ZWM0PGYzMj4pIC0+IEBsb2NhdGlvbigwKSB2ZWM0PGYzMj4geworICAgICAg
ICAgICAgICB2YXIgcmVzdWx0IDogdmVjNDxmMzI+OworICAgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8ICR7bXVsdGlzYW1wbGUuc2FtcGxlfTsgaSA9IGkgKyAxKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGV4dHVyZUxvYWQoc3JjLCB2ZWMyPGkzMj4oY29vcmQu
eHkpLCBpKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICog
JHsxIC8gbXVsdGlzYW1wbGUuc2FtcGxlfTsKKyAgICAgICAgICAgIH1gLAorICAgICAgICAgICAg
fSkKKyAgICAgICAgICA6IGRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeworICAgICAgICAgICAg
ICBjb2RlOiBgCisgICAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmcoMCkgdmFyIHNyYzogdGV4
dHVyZV8yZDxmMzI+OworICAgICAgICAgICAgQHN0YWdlKGZyYWdtZW50KSBmbiBtYWluKEBidWls
dGluKHBvc2l0aW9uKSBjb29yZDogdmVjNDxmMzI+KSAtPiBAbG9jYXRpb24oMCkgdmVjNDxmMzI+
IHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVMb2FkKHNyYywgdmVjMjxpMzI+KGNvb3Jk
Lnh5KSwgMCk7CisgICAgICAgICAgICB9YCwKKyAgICAgICAgICAgIH0pLAorCisgICAgICBlbnRy
eVBvaW50OiAnbWFpbicsCisgICAgICB0YXJnZXRzOiBbeyBmb3JtYXQgfV0sCisgICAgfSwKKwor
ICAgIG11bHRpc2FtcGxlOiB7CisgICAgICBjb3VudDogbXVsdGlzYW1wbGUucmVuZGVyLAorICAg
IH0sCisgIH0pOworfQorCitnLnRlc3QoJ3RleHR1cmVfYmluZGluZycpCisgIC5kZXNjKGBUZXN0
IHRoYXQgYSByZWd1bGFyIHRleHR1cmUgYWxsb2NhdGVkIGFzICdmb3JtYXQnIGlzIGNvcnJlY3Rs
eSBzYW1wbGVkIGFzICd2aWV3Rm9ybWF0Jy5gKQorICAucGFyYW1zKHUgPT4KKyAgICB1IC8vCisg
ICAgICAuY29tYmluZSgnZm9ybWF0Jywga1JlZ3VsYXJUZXh0dXJlRm9ybWF0cykKKyAgICAgIC5j
b21iaW5lKCd2aWV3Rm9ybWF0Jywga1JlZ3VsYXJUZXh0dXJlRm9ybWF0cykKKyAgICAgIC5maWx0
ZXIoCisgICAgICAgICh7IGZvcm1hdCwgdmlld0Zvcm1hdCB9KSA9PiBmb3JtYXQgIT09IHZpZXdG
b3JtYXQgJiYgdmlld0NvbXBhdGlibGUoZm9ybWF0LCB2aWV3Rm9ybWF0KQorICAgICAgKQorICAp
CisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGZvcm1hdCwgdmlld0Zvcm1hdCB9ID0g
dC5wYXJhbXM7CisKKyAgICAvLyBNYWtlIGFuIGlucHV0IHRleGVsIHZpZXcuCisgICAgY29uc3Qg
aW5wdXRUZXhlbFZpZXcgPSBtYWtlSW5wdXRUZXhlbFZpZXcoZm9ybWF0KTsKKworICAgIC8vIENy
ZWF0ZSB0aGUgaW5pdGlhbCB0ZXh0dXJlIHdpdGggdGhlIGNvbnRlbnRzIGlmIHRoZSBpbnB1dCB0
ZXhlbCB2aWV3LgorICAgIGNvbnN0IHRleHR1cmUgPSB0Lm1ha2VUZXh0dXJlV2l0aENvbnRlbnRz
KGlucHV0VGV4ZWxWaWV3LCB7CisgICAgICBzaXplOiBba1RleHR1cmVTaXplLCBrVGV4dHVyZVNp
emVdLAorICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5URVhUVVJFX0JJTkRJTkcsCisgICAg
ICB2aWV3Rm9ybWF0czogW3ZpZXdGb3JtYXRdLAorICAgIH0pOworCisgICAgLy8gUmVpbnRlcmVw
cmV0IHRoZSB0ZXh0dXJlIGFzIHRoZSB2aWV3IGZvcm1hdC4KKyAgICAvLyBNYWtlIGEgdGV4ZWwg
dmlldyBvZiB0aGUgZm9ybWF0IHRoYXQgYWxzbyByZWludGVycHJldHMgdGhlIGRhdGEuCisgICAg
Y29uc3QgcmVpbnRlcnByZXRlZFZpZXcgPSB0ZXh0dXJlLmNyZWF0ZVZpZXcoeyBmb3JtYXQ6IHZp
ZXdGb3JtYXQgfSk7CisgICAgY29uc3QgcmVpbnRlcnByZXRlZFRleGVsVmlldyA9IFRleGVsVmll
dy5mcm9tVGV4ZWxzQXNCeXRlcyh2aWV3Rm9ybWF0LCBpbnB1dFRleGVsVmlldy5ieXRlcyk7CisK
KyAgICAvLyBDcmVhdGUgYSBwaXBlbGluZSB0byB3cml0ZSBkYXRhIG91dCB0byByZ2JhOHVub3Jt
LgorICAgIGNvbnN0IHBpcGVsaW5lID0gdC5kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsK
KyAgICAgIGNvbXB1dGU6IHsKKyAgICAgICAgbW9kdWxlOiB0LmRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoeworICAgICAgICAgIGNvZGU6IGAKKyAgICAgICAgICBAZ3JvdXAoMCkgQGJpbmRpbmco
MCkgdmFyIHNyYzogdGV4dHVyZV8yZDxmMzI+OworICAgICAgICAgIEBncm91cCgwKSBAYmluZGlu
ZygxKSB2YXIgZHN0OiB0ZXh0dXJlX3N0b3JhZ2VfMmQ8cmdiYTh1bm9ybSwgd3JpdGU+OworICAg
ICAgICAgIEBzdGFnZShjb21wdXRlKSBAd29ya2dyb3VwX3NpemUoMSwgMSkgZm4gbWFpbigKKyAg
ICAgICAgICAgIEBidWlsdGluKGdsb2JhbF9pbnZvY2F0aW9uX2lkKSBnbG9iYWxfaWQ6IHZlYzM8
dTMyPiwKKyAgICAgICAgICApIHsKKyAgICAgICAgICAgIHZhciBjb29yZCA9IHZlYzI8aTMyPihn
bG9iYWxfaWQueHkpOworICAgICAgICAgICAgdGV4dHVyZVN0b3JlKGRzdCwgY29vcmQsIHRleHR1
cmVMb2FkKHNyYywgY29vcmQsIDApKTsKKyAgICAgICAgICB9YCwKKyAgICAgICAgfSksCisKKyAg
ICAgICAgZW50cnlQb2ludDogJ21haW4nLAorICAgICAgfSwKKyAgICB9KTsKKworICAgIC8vIENy
ZWF0ZSBhbiByZ2JhOHVub3JtIG91dHB1dCB0ZXh0dXJlLgorICAgIGNvbnN0IG91dHB1dFRleHR1
cmUgPSB0LnRyYWNrRm9yQ2xlYW51cCgKKyAgICAgIHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewor
ICAgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICAgICAgc2l6ZTogW2tUZXh0dXJlU2l6
ZSwga1RleHR1cmVTaXplXSwKKyAgICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5TVE9SQUdF
X0JJTkRJTkcgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMsCisgICAgICB9KQorICAgICk7CisK
KyAgICAvLyBFeGVjdXRlIGEgY29tcHV0ZSBwYXNzIHRvIGxvYWQgZGF0YSBmcm9tIHRoZSByZWlu
dGVycHJldGVkIHZpZXcgYW5kCisgICAgLy8gd3JpdGUgb3V0IHRvIHRoZSByZ2JhOHVub3JtIHRl
eHR1cmUuCisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSB0LmRldmljZS5jcmVhdGVDb21tYW5k
RW5jb2RlcigpOworICAgIGNvbnN0IHBhc3MgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQ
YXNzKCk7CisgICAgcGFzcy5zZXRQaXBlbGluZShwaXBlbGluZSk7CisgICAgcGFzcy5zZXRCaW5k
R3JvdXAoCisgICAgICAwLAorICAgICAgdC5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAgICAg
ICAgbGF5b3V0OiBwaXBlbGluZS5nZXRCaW5kR3JvdXBMYXlvdXQoMCksCisgICAgICAgIGVudHJp
ZXM6IFsKKyAgICAgICAgICB7CisgICAgICAgICAgICBiaW5kaW5nOiAwLAorICAgICAgICAgICAg
cmVzb3VyY2U6IHJlaW50ZXJwcmV0ZWRWaWV3LAorICAgICAgICAgIH0sCisKKyAgICAgICAgICB7
CisgICAgICAgICAgICBiaW5kaW5nOiAxLAorICAgICAgICAgICAgcmVzb3VyY2U6IG91dHB1dFRl
eHR1cmUuY3JlYXRlVmlldygpLAorICAgICAgICAgIH0sCisgICAgICAgIF0sCisgICAgICB9KQor
ICAgICk7CisKKyAgICBwYXNzLmRpc3BhdGNoKGtUZXh0dXJlU2l6ZSwga1RleHR1cmVTaXplKTsK
KyAgICBwYXNzLmVuZCgpOworICAgIHQuZGV2aWNlLnF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29k
ZXIuZmluaXNoKCldKTsKKworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRleHR1cmVDb250ZW50
SXNPS0J5VDJCKAorICAgICAgdCwKKyAgICAgIHsgdGV4dHVyZTogb3V0cHV0VGV4dHVyZSB9LAor
ICAgICAgW2tUZXh0dXJlU2l6ZSwga1RleHR1cmVTaXplXSwKKyAgICAgIHsKKyAgICAgICAgZXhw
VGV4ZWxWaWV3OiBUZXhlbFZpZXcuZnJvbVRleGVsc0FzQ29sb3JzKCdyZ2JhOHVub3JtJywgcmVp
bnRlcnByZXRlZFRleGVsVmlldy5jb2xvciwgeworICAgICAgICAgIGNsYW1wVG9Gb3JtYXRSYW5n
ZTogdHJ1ZSwKKyAgICAgICAgfSksCisgICAgICB9LAorCisgICAgICB7IG1heERpZmZVTFBzRm9y
Tm9ybUZvcm1hdDogMSB9CisgICAgKTsKKworICAgIHQuZXhwZWN0T0socmVzdWx0KTsKKyAgfSk7
CisKK2cudGVzdCgncmVuZGVyX2FuZF9yZXNvbHZlX2F0dGFjaG1lbnQnKQorICAuZGVzYygKKyAg
ICBgVGVzdCB0aGF0IGEgY29sb3IgcmVuZGVyIGF0dGFjaG1lbnQgYWxsb2NhdGVkIGFzICdmb3Jt
YXQnIGlzIGNvcnJlY3RseSByZW5kZXJlZCB0byBhcyAndmlld0Zvcm1hdCcsCithbmQgcmVzb2x2
ZWQgdG8gYW4gYXR0YWNobWVudCBhbGxvY2F0ZWQgYXMgJ2Zvcm1hdCcgdmlld2VkIGFzICd2aWV3
Rm9ybWF0Jy4KKworT3RoZXIgY29tYmluYXRpb25zIGFyZW4ndCBwb3NzaWJsZSBiZWNhdXNlIHRo
ZSByZW5kZXIgYW5kIHJlc29sdmUgdGFyZ2V0cyBtdXN0IGJvdGggbWF0Y2gKK2luIHZpZXcgZm9y
bWF0IGFuZCBtYXRjaCBpbiBiYXNlIGZvcm1hdC5gCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAg
dSAvLworICAgICAgLmNvbWJpbmUoJ2Zvcm1hdCcsIGtSZW5kZXJhYmxlQ29sb3JUZXh0dXJlRm9y
bWF0cykKKyAgICAgIC5jb21iaW5lKCd2aWV3Rm9ybWF0Jywga1JlbmRlcmFibGVDb2xvclRleHR1
cmVGb3JtYXRzKQorICAgICAgLmZpbHRlcigKKyAgICAgICAgKHsgZm9ybWF0LCB2aWV3Rm9ybWF0
IH0pID0+IGZvcm1hdCAhPT0gdmlld0Zvcm1hdCAmJiB2aWV3Q29tcGF0aWJsZShmb3JtYXQsIHZp
ZXdGb3JtYXQpCisgICAgICApCisgICAgICAuY29tYmluZSgnc2FtcGxlQ291bnQnLCBbMSwgNF0p
CisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgZm9ybWF0LCB2aWV3Rm9ybWF0
LCBzYW1wbGVDb3VudCB9ID0gdC5wYXJhbXM7CisKKyAgICAvLyBNYWtlIGFuIGlucHV0IHRleGVs
IHZpZXcuCisgICAgY29uc3QgaW5wdXRUZXhlbFZpZXcgPSBtYWtlSW5wdXRUZXhlbFZpZXcoZm9y
bWF0KTsKKworICAgIC8vIENyZWF0ZSB0aGUgcmVuZGVyVGV4dHVyZSBhcyB8Zm9ybWF0fC4KKyAg
ICBjb25zdCByZW5kZXJUZXh0dXJlID0gdC50cmFja0ZvckNsZWFudXAoCisgICAgICB0LmRldmlj
ZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgICAgZm9ybWF0LAorICAgICAgICBzaXplOiBba1RleHR1
cmVTaXplLCBrVGV4dHVyZVNpemVdLAorICAgICAgICB1c2FnZToKKyAgICAgICAgICBHUFVUZXh0
dXJlVXNhZ2UuUkVOREVSX0FUVEFDSE1FTlQgfAorICAgICAgICAgIChzYW1wbGVDb3VudCA+IDEg
PyBHUFVUZXh0dXJlVXNhZ2UuVEVYVFVSRV9CSU5ESU5HIDogR1BVVGV4dHVyZVVzYWdlLkNPUFlf
U1JDKSwKKyAgICAgICAgdmlld0Zvcm1hdHM6IFt2aWV3Rm9ybWF0XSwKKyAgICAgICAgc2FtcGxl
Q291bnQsCisgICAgICB9KQorICAgICk7CisKKyAgICBjb25zdCByZXNvbHZlVGV4dHVyZSA9Cisg
ICAgICBzYW1wbGVDb3VudCA9PT0gMQorICAgICAgICA/IHVuZGVmaW5lZAorICAgICAgICA6IHQu
dHJhY2tGb3JDbGVhbnVwKAorICAgICAgICAgICAgdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7Cisg
ICAgICAgICAgICAgIGZvcm1hdCwKKyAgICAgICAgICAgICAgc2l6ZTogW2tUZXh0dXJlU2l6ZSwg
a1RleHR1cmVTaXplXSwKKyAgICAgICAgICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5DT1BZ
X1NSQyB8IEdQVVRleHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCwKKyAgICAgICAgICAgICAg
dmlld0Zvcm1hdHM6IFt2aWV3Rm9ybWF0XSwKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgKTsK
KworICAgIC8vIENyZWF0ZSB0aGUgc2FtcGxlIHNvdXJjZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0
aGUgaW5wdXQgdGV4ZWwgdmlldy4KKyAgICAvLyBXZSB3aWxsIHNhbXBsZSB0aGlzIHRleHR1cmUg
aW50byB8cmVuZGVyVGV4dHVyZXwuIEl0IHVzZXMgdGhlIHNhbWUgZm9ybWF0IHRvIGtlZXAgdGhl
IHNhbWUKKyAgICAvLyBudW1iZXIgb2YgYml0cyBvZiBwcmVjaXNpb24uCisgICAgY29uc3Qgc2Ft
cGxlU291cmNlID0gdC5tYWtlVGV4dHVyZVdpdGhDb250ZW50cyhpbnB1dFRleGVsVmlldywgewor
ICAgICAgc2l6ZTogW2tUZXh0dXJlU2l6ZSwga1RleHR1cmVTaXplXSwKKyAgICAgIHVzYWdlOiBH
UFVUZXh0dXJlVXNhZ2UuVEVYVFVSRV9CSU5ESU5HLAorICAgIH0pOworCisgICAgLy8gUmVpbnRl
cnByZXQgdGhlIHJlbmRlclRleHR1cmUgYXMgfHZpZXdGb3JtYXR8LgorICAgIGNvbnN0IHJlaW50
ZXJwcmV0ZWRSZW5kZXJWaWV3ID0gcmVuZGVyVGV4dHVyZS5jcmVhdGVWaWV3KHsgZm9ybWF0OiB2
aWV3Rm9ybWF0IH0pOworICAgIGNvbnN0IHJlaW50ZXJwcmV0ZWRSZXNvbHZlVmlldyA9CisgICAg
ICByZXNvbHZlVGV4dHVyZSAmJiByZXNvbHZlVGV4dHVyZS5jcmVhdGVWaWV3KHsgZm9ybWF0OiB2
aWV3Rm9ybWF0IH0pOworCisgICAgLy8gQ3JlYXRlIGEgcGlwZWxpbmUgdG8gYmxpdCBhIHNyYyB0
ZXh0dXJlIHRvIHRoZSByZW5kZXIgYXR0YWNobWVudC4KKyAgICBjb25zdCBwaXBlbGluZSA9IG1h
a2VCbGl0UGlwZWxpbmUodC5kZXZpY2UsIHZpZXdGb3JtYXQsIHsKKyAgICAgIHNhbXBsZTogMSwK
KyAgICAgIHJlbmRlcjogc2FtcGxlQ291bnQsCisgICAgfSk7CisKKyAgICAvLyBFeGVjdXRlIGEg
cmVuZGVyIHBhc3MgdG8gc2FtcGxlIHxzYW1wbGVTb3VyY2V8IGludG8gfHRleHR1cmV8IHZpZXdl
ZCBhcyB8dmlld0Zvcm1hdHwuCisgICAgY29uc3QgY29tbWFuZEVuY29kZXIgPSB0LmRldmljZS5j
cmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNvbnN0IHBhc3MgPSBjb21tYW5kRW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MoeworICAgICAgY29sb3JBdHRhY2htZW50czogWworICAgICAgICB7Cisg
ICAgICAgICAgdmlldzogcmVpbnRlcnByZXRlZFJlbmRlclZpZXcsCisgICAgICAgICAgcmVzb2x2
ZVRhcmdldDogcmVpbnRlcnByZXRlZFJlc29sdmVWaWV3LAorICAgICAgICAgIGxvYWRPcDogJ2xv
YWQnLAorICAgICAgICAgIHN0b3JlT3A6ICdzdG9yZScsCisgICAgICAgIH0sCisgICAgICBdLAor
ICAgIH0pOworCisgICAgcGFzcy5zZXRQaXBlbGluZShwaXBlbGluZSk7CisgICAgcGFzcy5zZXRC
aW5kR3JvdXAoCisgICAgICAwLAorICAgICAgdC5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAg
ICAgICAgbGF5b3V0OiBwaXBlbGluZS5nZXRCaW5kR3JvdXBMYXlvdXQoMCksCisgICAgICAgIGVu
dHJpZXM6IFsKKyAgICAgICAgICB7CisgICAgICAgICAgICBiaW5kaW5nOiAwLAorICAgICAgICAg
ICAgcmVzb3VyY2U6IHNhbXBsZVNvdXJjZS5jcmVhdGVWaWV3KCksCisgICAgICAgICAgfSwKKyAg
ICAgICAgXSwKKyAgICAgIH0pCisgICAgKTsKKworICAgIHBhc3MuZHJhdyg2KTsKKyAgICBwYXNz
LmVuZCgpOworCisgICAgLy8gSWYgdGhlIHJlbmRlciB0YXJnZXQgaXMgbXVsdGlzYW1wbGVkLCB3
ZSdsbCBtYW51YWxseSByZXNvbHZlIGl0IHRvIGNoZWNrCisgICAgLy8gdGhlIGNvbnRlbnRzLgor
ICAgIGNvbnN0IHNpbmdsZVNhbXBsZVJlbmRlclRleHR1cmUgPSByZXNvbHZlVGV4dHVyZQorICAg
ICAgPyB0LnRyYWNrRm9yQ2xlYW51cCgKKyAgICAgICAgICB0LmRldmljZS5jcmVhdGVUZXh0dXJl
KHsKKyAgICAgICAgICAgIGZvcm1hdCwKKyAgICAgICAgICAgIHNpemU6IFtrVGV4dHVyZVNpemUs
IGtUZXh0dXJlU2l6ZV0sCisgICAgICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlf
U1JDIHwgR1BVVGV4dHVyZVVzYWdlLlJFTkRFUl9BVFRBQ0hNRU5ULAorICAgICAgICAgIH0pCisg
ICAgICAgICkKKyAgICAgIDogcmVuZGVyVGV4dHVyZTsKKworICAgIGlmIChyZXNvbHZlVGV4dHVy
ZSkgeworICAgICAgLy8gQ3JlYXRlIGEgcGlwZWxpbmUgdG8gYmxpdCB0aGUgbXVsdGlzYW1wbGVk
IHJlbmRlciB0ZXh0dXJlIHRvIGEgbm9uLW11bHRpc2FtcGxlIHRleHR1cmUuCisgICAgICAvLyBX
ZSBhcmUgYmFzaWNhbGx5IHBlcmZvcm1pbmcgYSBtYW51YWwgcmVzb2x2ZSBzdGVwIHRvIHRoZSBz
YW1lIGZvcm1hdCBhcyB0aGUgb3JpZ2luYWwKKyAgICAgIC8vIHJlbmRlciB0ZXh0dXJlIHRvIGNo
ZWNrIGl0cyBjb250ZW50cy4KKyAgICAgIGNvbnN0IHBpcGVsaW5lID0gbWFrZUJsaXRQaXBlbGlu
ZSh0LmRldmljZSwgZm9ybWF0LCB7IHNhbXBsZTogc2FtcGxlQ291bnQsIHJlbmRlcjogMSB9KTsK
KyAgICAgIGNvbnN0IHBhc3MgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeworICAg
ICAgICBjb2xvckF0dGFjaG1lbnRzOiBbCisgICAgICAgICAgeworICAgICAgICAgICAgdmlldzog
c2luZ2xlU2FtcGxlUmVuZGVyVGV4dHVyZS5jcmVhdGVWaWV3KCksCisgICAgICAgICAgICBsb2Fk
T3A6ICdsb2FkJywKKyAgICAgICAgICAgIHN0b3JlT3A6ICdzdG9yZScsCisgICAgICAgICAgfSwK
KyAgICAgICAgXSwKKyAgICAgIH0pOworCisgICAgICBwYXNzLnNldFBpcGVsaW5lKHBpcGVsaW5l
KTsKKyAgICAgIHBhc3Muc2V0QmluZEdyb3VwKAorICAgICAgICAwLAorICAgICAgICB0LmRldmlj
ZS5jcmVhdGVCaW5kR3JvdXAoeworICAgICAgICAgIGxheW91dDogcGlwZWxpbmUuZ2V0QmluZEdy
b3VwTGF5b3V0KDApLAorICAgICAgICAgIGVudHJpZXM6IFsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgYmluZGluZzogMCwKKyAgICAgICAgICAgICAgcmVzb3VyY2U6IHJlbmRlclRleHR1
cmUuY3JlYXRlVmlldygpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAgICAgICB9
KQorICAgICAgKTsKKworICAgICAgcGFzcy5kcmF3KDYpOworICAgICAgcGFzcy5lbmQoKTsKKyAg
ICB9CisKKyAgICAvLyBTdWJtaXQgdGhlIGNvbW1hbmRzLgorICAgIHQuZGV2aWNlLnF1ZXVlLnN1
Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNoKCldKTsKKworICAgIC8vIENoZWNrIHRoZSByZW5k
ZXJlZCBjb250ZW50cy4KKyAgICBjb25zdCByZW5kZXJWaWV3VGV4ZWxzID0gVGV4ZWxWaWV3LmZy
b21UZXhlbHNBc0NvbG9ycyh2aWV3Rm9ybWF0LCBpbnB1dFRleGVsVmlldy5jb2xvciwgeworICAg
ICAgY2xhbXBUb0Zvcm1hdFJhbmdlOiB0cnVlLAorICAgIH0pOworCisgICAgdC5leHBlY3RPSygK
KyAgICAgIGF3YWl0IHRleHR1cmVDb250ZW50SXNPS0J5VDJCKAorICAgICAgICB0LAorICAgICAg
ICB7IHRleHR1cmU6IHNpbmdsZVNhbXBsZVJlbmRlclRleHR1cmUgfSwKKyAgICAgICAgW2tUZXh0
dXJlU2l6ZSwga1RleHR1cmVTaXplXSwKKyAgICAgICAgeyBleHBUZXhlbFZpZXc6IHJlbmRlclZp
ZXdUZXhlbHMgfSwKKyAgICAgICAgeyBtYXhEaWZmVUxQc0Zvck5vcm1Gb3JtYXQ6IDIgfQorICAg
ICAgKQorICAgICk7CisKKyAgICAvLyBDaGVjayB0aGUgcmVzb2x2ZWQgY29udGVudHMuCisgICAg
aWYgKHJlc29sdmVUZXh0dXJlKSB7CisgICAgICBjb25zdCByZXNvbHZlVmlldyA9IFRleGVsVmll
dy5mcm9tVGV4ZWxzQXNDb2xvcnModmlld0Zvcm1hdCwgcmVuZGVyVmlld1RleGVscy5jb2xvciwg
eworICAgICAgICBjbGFtcFRvRm9ybWF0UmFuZ2U6IHRydWUsCisgICAgICB9KTsKKworICAgICAg
Y29uc3QgcmVzdWx0ID0gYXdhaXQgdGV4dHVyZUNvbnRlbnRJc09LQnlUMkIoCisgICAgICAgIHQs
CisgICAgICAgIHsgdGV4dHVyZTogcmVzb2x2ZVRleHR1cmUgfSwKKyAgICAgICAgW2tUZXh0dXJl
U2l6ZSwga1RleHR1cmVTaXplXSwKKyAgICAgICAgeyBleHBUZXhlbFZpZXc6IHJlc29sdmVWaWV3
IH0sCisgICAgICAgIHsgbWF4RGlmZlVMUHNGb3JOb3JtRm9ybWF0OiAyIH0KKyAgICAgICk7CisK
KyAgICAgIHQuZXhwZWN0T0socmVzdWx0KTsKKyAgICB9CisgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdGV4dHVyZV92
aWV3L3JlYWQuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvb3BlcmF0aW9uL3RleHR1cmVfdmlldy9yZWFkLnNwZWMuanMKaW5kZXggNmIzMjExYjM5YTg1
Li45Njg4NGVmZWM1MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3RleHR1cmVfdmlldy9yZWFkLnNwZWMuanMKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdGV4dHVyZV92
aWV3L3JlYWQuc3BlYy5qcwpAQCAtMTAsNiArMTAsOSBAQCBBbGwgeD0gZXZlcnkgcG9zc2libGUg
dmlldyByZWFkIG1ldGhvZDogewogICAtIGRlcHRoIGNvbXBhcmlzb24KICAgLSBzdGVuY2lsIGNv
bXBhcmlzb24KIH0KKworRm9ybWF0IHJlaW50ZXJwcmV0YXRpb24gaXMgbm90IHRlc3RlZCBoZXJl
LiBJdCBpcyBpbiBmb3JtYXRfcmVpbnRlcnByZXRhdGlvbi5zcGVjLnRzLgorCiBUT0RPOiBXcml0
ZSBoZWxwZXIgZm9yIHRoaXMgaWYgbm90IGFscmVhZHkgYXZhaWxhYmxlIChzZWUgcmVzb3VyY2Vf
aW5pdCwgYnVmZmVyX3N5bmNfdGVzdCBmb3IgcmVsYXRlZCBjb2RlKS4KIGA7CiBpbXBvcnQgeyBt
YWtlVGVzdEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay90ZXN0X2dy
b3VwLmpzJzsKQEAgLTIyLDcgKzI1LDYgQEAgZy50ZXN0KCdmb3JtYXQnKQogICAgIGBWaWV3cyBv
ZiBldmVyeSBhbGxvd2VkIGZvcm1hdC4KIAogLSB4PSBldmVyeSB0ZXh0dXJlIGZvcm1hdAotLSB4
PSBldmVyeSB2YWxpZCB2aWV3IGZvcm1hdCAoaW5jbHVkaW5nIHNhbWUpCiAtIHg9IHNhbXBsZUNv
dW50IHsxLCA0fSBpZiB2YWxpZAogLSB4PSBldmVyeSBwb3NzaWJsZSB2aWV3IHJlYWQgbWV0aG9k
IChzZWUgYWJvdmUpCiBgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvd3JpdGUuc3BlYy5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3RleHR1cmVfdmll
dy93cml0ZS5zcGVjLmpzCmluZGV4IDkyMDVjN2ExN2NmNy4uM2E0N2MwMzYwZWJlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi90
ZXh0dXJlX3ZpZXcvd3JpdGUuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvd3JpdGUuc3BlYy5qcwpAQCAt
OCw2ICs4LDkgQEAgQWxsIHg9IGV2ZXJ5IHBvc3NpYmxlIHZpZXcgd3JpdGUgbWV0aG9kOiB7CiAg
IC0gcmVuZGVyIHBhc3Mgc3RvcmUKICAgLSByZW5kZXIgcGFzcyByZXNvbHZlCiB9CisKK0Zvcm1h
dCByZWludGVycHJldGF0aW9uIGlzIG5vdCB0ZXN0ZWQgaGVyZS4gSXQgaXMgaW4gZm9ybWF0X3Jl
aW50ZXJwcmV0YXRpb24uc3BlYy50cy4KKwogVE9ETzogV3JpdGUgaGVscGVyIGZvciB0aGlzIGlm
IG5vdCBhbHJlYWR5IGF2YWlsYWJsZSAoc2VlIHJlc291cmNlX2luaXQsIGJ1ZmZlcl9zeW5jX3Rl
c3QgZm9yIHJlbGF0ZWQgY29kZSkuCiBgOwogaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20g
Jy4uLy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7CkBAIC0yMCw3ICsy
Myw2IEBAIGcudGVzdCgnZm9ybWF0JykKICAgICBgVmlld3Mgb2YgZXZlcnkgYWxsb3dlZCBmb3Jt
YXQuCiAKIC0geD0gZXZlcnkgdGV4dHVyZSBmb3JtYXQKLS0geD0gZXZlcnkgdmFsaWQgdmlldyBm
b3JtYXQgKGluY2x1ZGluZyBzYW1lKQogLSB4PSBzYW1wbGVDb3VudCB7MSwgNH0gaWYgdmFsaWQK
IC0geD0gZXZlcnkgcG9zc2libGUgdmlldyB3cml0ZSBtZXRob2QgKHNlZSBhYm92ZSkKIGAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0
aW9uL3ZlcnRleF9zdGF0ZS9jb3JyZWN0bmVzcy5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdmVydGV4X3N0YXRlL2NvcnJlY3RuZXNz
LnNwZWMuanMKaW5kZXggOGRhYjUwMzc5YTIwLi4yNThlYmQ5YjIzYWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3ZlcnRleF9z
dGF0ZS9jb3JyZWN0bmVzcy5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3ZlcnRleF9zdGF0ZS9jb3JyZWN0bmVzcy5zcGVjLmpz
CkBAIC05MSw4ICs5MSw4IEBAIGNsYXNzIFZlcnRleFN0YXRlVGVzdCBleHRlbmRzIEdQVVRlc3Qg
ewogICAgICAgICAgIHN0b3JhZ2VUeXBlID0gJ3N0b3JhZ2UsIHJlYWQnOwogICAgICAgICB9CiAK
LSAgICAgICAgdnNJbnB1dHMgKz0gYCAgQGxvY2F0aW9uKCR7aX0pIGF0dHJpYiR7aX0gOiAke3No
YWRlclR5cGV9O1xuYDsKLSAgICAgICAgdnNCaW5kaW5ncyArPSBgc3RydWN0IFMke2l9IHsgZGF0
YSA6IGFycmF5PHZlYzQ8JHthLnNoYWRlckJhc2VUeXBlfT4sICR7bWF4Q291bnR9PjsgfTtcbmA7
CisgICAgICAgIHZzSW5wdXRzICs9IGAgIEBsb2NhdGlvbigke2l9KSBhdHRyaWIke2l9IDogJHtz
aGFkZXJUeXBlfSxcbmA7CisgICAgICAgIHZzQmluZGluZ3MgKz0gYHN0cnVjdCBTJHtpfSB7IGRh
dGEgOiBhcnJheTx2ZWM0PCR7YS5zaGFkZXJCYXNlVHlwZX0+LCAke21heENvdW50fT4gfTtcbmA7
CiAgICAgICAgIHZzQmluZGluZ3MgKz0gYEBncm91cCgwKSBAYmluZGluZygke2l9KSB2YXI8JHtz
dG9yYWdlVHlwZX0+IHByb3ZpZGVkRGF0YSR7aX0gOiBTJHtpfTtcbmA7CiAKICAgICAgICAgLy8g
R2VuZXJhdGUgdGhlIGFsbCB0aGUgY2hlY2tzIGZvciB0aGUgYXR0cmlidXRlcy4KQEAgLTEyMiw4
ICsxMjIsOCBAQCBjbGFzcyBWZXJ0ZXhTdGF0ZVRlc3QgZXh0ZW5kcyBHUFVUZXN0IHsKICAgICBy
ZXR1cm4gYAogc3RydWN0IElucHV0cyB7CiAke3ZzSW5wdXRzfQotICBAYnVpbHRpbih2ZXJ0ZXhf
aW5kZXgpIHZlcnRleEluZGV4OiB1MzI7Ci0gIEBidWlsdGluKGluc3RhbmNlX2luZGV4KSBpbnN0
YW5jZUluZGV4OiB1MzI7CisgIEBidWlsdGluKHZlcnRleF9pbmRleCkgdmVydGV4SW5kZXg6IHUz
MiwKKyAgQGJ1aWx0aW4oaW5zdGFuY2VfaW5kZXgpIGluc3RhbmNlSW5kZXg6IHUzMiwKIH07CiAK
ICR7dnNCaW5kaW5nc30KQEAgLTE0Nyw4ICsxNDcsOCBAQCAke3ZzQ2hlY2tzfQogfQogCiBzdHJ1
Y3QgVlNPdXRwdXRzIHsKLSAgQGxvY2F0aW9uKDApIEBpbnRlcnBvbGF0ZShmbGF0KSByZXN1bHQg
OiBpMzI7Ci0gIEBidWlsdGluKHBvc2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8ZjMyPjsKKyAgQGxv
Y2F0aW9uKDApIEBpbnRlcnBvbGF0ZShmbGF0KSByZXN1bHQgOiBpMzIsCisgIEBidWlsdGluKHBv
c2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8ZjMyPiwKIH07CiAKIEBzdGFnZSh2ZXJ0ZXgpIGZuIHZz
TWFpbihpbnB1dCA6IElucHV0cykgLT4gVlNPdXRwdXRzIHsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9hdHRhY2htZW50X2Nv
bXBhdGliaWxpdHkuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9hcGkvdmFsaWRhdGlvbi9hdHRhY2htZW50X2NvbXBhdGliaWxpdHkuc3BlYy5qcwppbmRleCBi
YmVhOWI0MTg2ODMuLmM0MDY0Yjk4MGVlMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2F0dGFjaG1lbnRfY29tcGF0aWJpbGl0
eS5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
dmFsaWRhdGlvbi9hdHRhY2htZW50X2NvbXBhdGliaWxpdHkuc3BlYy5qcwpAQCAtMiw4ICsyLDYg
QEAKICAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9UIEVESVQuIFNvdXJjZTogaHR0cHM6Ly9naXRo
dWIuY29tL2dwdXdlYi9jdHMKICAqKi8gZXhwb3J0IGNvbnN0IGRlc2NyaXB0aW9uID0gYAogVmFs
aWRhdGlvbiBmb3IgYXR0YWNobWVudCBjb21wYXRpYmlsaXR5IGJldHdlZW4gcmVuZGVyIHBhc3Nl
cywgYnVuZGxlcywgYW5kIHBpcGVsaW5lcwotCi1UT0RPOiBBZGQgc3BhcnNlIGNvbG9yIGF0dGFj
aG1lbnQgY29tcGF0aWJpbGl0eSB0ZXN0IHdoZW4gZGVmaW5lZCBieSBzcGVjaWZpY2F0aW9uCiBg
OwogaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdv
cmsvdGVzdF9ncm91cC5qcyc7CiBpbXBvcnQgeyByYW5nZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1v
bi91dGlsL3V0aWwuanMnOwpAQCAtMTksNiArMTcsNjIgQEAgaW1wb3J0IHsKIGltcG9ydCB7IFZh
bGlkYXRpb25UZXN0IH0gZnJvbSAnLi92YWxpZGF0aW9uX3Rlc3QuanMnOwogCiBjb25zdCBrQ29s
b3JBdHRhY2htZW50Q291bnRzID0gcmFuZ2Uoa01heENvbG9yQXR0YWNobWVudHMsIGkgPT4gaSAr
IDEpOworY29uc3Qga0NvbG9yQXR0YWNobWVudHMgPSBrQ29sb3JBdHRhY2htZW50Q291bnRzCisg
IC5tYXAoY291bnQgPT4geworICAgIC8vIGdlbmVyYXRlIGNhc2VzIHdpdGggMC4uMSBudWxsIGF0
dGFjaG1lbnRzIGF0IGRpZmZlcmVudCBsb2NhdGlvbgorICAgIC8vIGUuZy4gY291bnQgPT0gMgor
ICAgIC8vIFsKKyAgICAvLyAgICBbMSwgMV0sCisgICAgLy8gICAgWzAsIDFdLAorICAgIC8vICAg
IFsxLCAwXSwKKyAgICAvLyBdCisgICAgLy8gMCAoZmFsc2UpIG1lYW5zIG51bGwgYXR0YWNobWVu
dCwgMSAodHJ1ZSkgbWVhbnMgbm9uLW51bGwgYXR0YWNobWVudCwgYXQgdGhlIHNsb3QKKworICAg
IC8vIFNwZWNpYWwgY2FzZXM6IHdlIG5lZWQgYXQgbGVhc3QgYSBjb2xvciBhdHRhY2htZW50LCB3
aGVuIHdlIGRvbid0IGhhdmUgZGVwdGggc3RlbmNpbCBhdHRhY2htZW50CisgICAgaWYgKGNvdW50
ID09PSAxKSB7CisgICAgICByZXR1cm4gW1sxXV07CisgICAgfQorICAgIGlmIChjb3VudCA9PT0g
MikgeworICAgICAgcmV0dXJuIFsKKyAgICAgICAgWzEsIDFdLAorICAgICAgICBbMCwgMV0sCisg
ICAgICAgIFsxLCAwXSwKKyAgICAgIF07CisgICAgfQorCisgICAgLy8gWzEsIDEsIC4uLiwgMV06
IGFsbCBjb2xvciBhdHRhY2htZW50IGFyZSB1c2VkCisgICAgbGV0IHJlc3VsdCA9IFtuZXcgQXJy
YXkoY291bnQpLmZpbGwodHJ1ZSldOworCisgICAgLy8gWzEsIDAsIDEsIC4uLiwgMV06IGdlbmVy
YXRlIGNhc2VzIHdpdGggb25lIG51bGwgYXR0YWNobWVudCBhdCBkaWZmZXJlbnQgbG9jYXRpb25z
CisgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCgKKyAgICAgIHJhbmdlKGNvdW50LCBpID0+IHsK
KyAgICAgICAgY29uc3QgciA9IG5ldyBBcnJheShjb3VudCkuZmlsbCh0cnVlKTsKKyAgICAgICAg
cltpXSA9IGZhbHNlOworICAgICAgICByZXR1cm4gcjsKKyAgICAgIH0pCisgICAgKTsKKworICAg
IC8vIFsxLCAwLCAxLCAuLi4sIDAsIDFdOiBnZW5lcmF0ZSBjYXNlcyB3aXRoIHR3byBudWxsIGF0
dGFjaG1lbnRzIGF0IGRpZmZlcmVudCBsb2NhdGlvbnMKKyAgICAvLyBUbyByZWR1Y2UgdGVzdCBy
dW4gdGltZSwgbGltaXQgdGhlIGF0dGFjaG1lbnQgY291bnQgdG8gPD0gNAorICAgIGlmIChjb3Vu
dCA8PSA0KSB7CisgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KAorICAgICAgICByYW5nZShj
b3VudCAtIDEsIGkgPT4geworICAgICAgICAgIGNvbnN0IGNhc2VzID0gW107CisgICAgICAgICAg
Zm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgY291bnQ7IGorKykgeworICAgICAgICAgICAgY29uc3Qg
ciA9IG5ldyBBcnJheShjb3VudCkuZmlsbCh0cnVlKTsKKyAgICAgICAgICAgIHJbaV0gPSBmYWxz
ZTsKKyAgICAgICAgICAgIHJbal0gPSBmYWxzZTsKKyAgICAgICAgICAgIGNhc2VzLnB1c2gocik7
CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBjYXNlczsKKyAgICAgICAgfSkuZmxhdCgp
CisgICAgICApOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CisgIH0pCisgIC5mbGF0KCk7
CisKIGNvbnN0IGtEZXB0aFN0ZW5jaWxBdHRhY2htZW50Rm9ybWF0cyA9IFsKICAgdW5kZWZpbmVk
LAogICAuLi5rU2l6ZWREZXB0aFN0ZW5jaWxGb3JtYXRzLApAQCAtMzksMTIgKzkzLDE0IEBAIGNs
YXNzIEYgZXh0ZW5kcyBWYWxpZGF0aW9uVGVzdCB7CiAgIH0KIAogICBjcmVhdGVDb2xvckF0dGFj
aG1lbnQoZm9ybWF0LCBzYW1wbGVDb3VudCkgewotICAgIHJldHVybiB7Ci0gICAgICB2aWV3OiB0
aGlzLmNyZWF0ZUF0dGFjaG1lbnRUZXh0dXJlVmlldyhmb3JtYXQsIHNhbXBsZUNvdW50KSwKLSAg
ICAgIGNsZWFyVmFsdWU6IFswLCAwLCAwLCAwXSwKLSAgICAgIGxvYWRPcDogJ2NsZWFyJywKLSAg
ICAgIHN0b3JlT3A6ICdzdG9yZScsCi0gICAgfTsKKyAgICByZXR1cm4gZm9ybWF0ID09PSBudWxs
CisgICAgICA/IG51bGwKKyAgICAgIDogeworICAgICAgICAgIHZpZXc6IHRoaXMuY3JlYXRlQXR0
YWNobWVudFRleHR1cmVWaWV3KGZvcm1hdCwgc2FtcGxlQ291bnQpLAorICAgICAgICAgIGNsZWFy
VmFsdWU6IFswLCAwLCAwLCAwXSwKKyAgICAgICAgICBsb2FkT3A6ICdjbGVhcicsCisgICAgICAg
ICAgc3RvcmVPcDogJ3N0b3JlJywKKyAgICAgICAgfTsKICAgfQogCiAgIGNyZWF0ZURlcHRoQXR0
YWNobWVudChmb3JtYXQsIHNhbXBsZUNvdW50KSB7CkBAIC02NSw3ICsxMjEsNyBAQCBjbGFzcyBG
IGV4dGVuZHMgVmFsaWRhdGlvblRlc3QgewogICAgIHJldHVybiBhdHRhY2htZW50OwogICB9CiAK
LSAgY3JlYXRlUmVuZGVyUGlwZWxpbmUodGFyZ2V0cywgZGVwdGhTdGVuY2lsLCBzYW1wbGVDb3Vu
dCkgeworICBjcmVhdGVSZW5kZXJQaXBlbGluZSh0YXJnZXRzLCBkZXB0aFN0ZW5jaWwsIHNhbXBs
ZUNvdW50LCBjdWxsTW9kZSkgewogICAgIHJldHVybiB0aGlzLmRldmljZS5jcmVhdGVSZW5kZXJQ
aXBlbGluZSh7CiAgICAgICB2ZXJ0ZXg6IHsKICAgICAgICAgbW9kdWxlOiB0aGlzLmRldmljZS5j
cmVhdGVTaGFkZXJNb2R1bGUoewpAQCAtODcsNyArMTQzLDcgQEAgY2xhc3MgRiBleHRlbmRzIFZh
bGlkYXRpb25UZXN0IHsKICAgICAgICAgdGFyZ2V0cywKICAgICAgIH0sCiAKLSAgICAgIHByaW1p
dGl2ZTogeyB0b3BvbG9neTogJ3RyaWFuZ2xlLWxpc3QnIH0sCisgICAgICBwcmltaXRpdmU6IHsg
dG9wb2xvZ3k6ICd0cmlhbmdsZS1saXN0JywgY3VsbE1vZGUgfSwKICAgICAgIGRlcHRoU3RlbmNp
bCwKICAgICAgIG11bHRpc2FtcGxlOiB7IGNvdW50OiBzYW1wbGVDb3VudCB9LAogICAgIH0pOwpA
QCAtMTMwLDggKzE4Niw2IEBAIGcudGVzdCgncmVuZGVyX3Bhc3NfYW5kX2J1bmRsZSxjb2xvcl9j
b3VudCcpCiAgIC5kZXNjKAogICAgIGAKICAgVGVzdCB0aGF0IHRoZSBudW1iZXIgb2YgY29sb3Ig
YXR0YWNobWVudHMgaW4gcmVuZGVyIHBhc3NlcyBhbmQgYnVuZGxlcyBtdXN0IG1hdGNoLgotCi0g
IFRPRE86IEFkZCBzcGFyc2UgY29sb3IgYXR0YWNobWVudCBjb21wYXRpYmlsaXR5IHRlc3Qgd2hl
biBkZWZpbmVkIGJ5IHNwZWNpZmljYXRpb24KICAgYAogICApCiAgIC5wYXJhbXNTdWJjYXNlc09u
bHkodSA9PgpAQCAtMTU3LDYgKzIxMSw1MSBAQCBnLnRlc3QoJ3JlbmRlcl9wYXNzX2FuZF9idW5k
bGUsY29sb3JfY291bnQnKQogICAgIHZhbGlkYXRlRmluaXNoQW5kU3VibWl0KHBhc3NDb3VudCA9
PT0gYnVuZGxlQ291bnQsIHRydWUpOwogICB9KTsKIAorZy50ZXN0KCdyZW5kZXJfcGFzc19hbmRf
YnVuZGxlLGNvbG9yX3NwYXJzZScpCisgIC5kZXNjKAorICAgIGAKKyAgVGVzdCB0aGF0IGVhY2gg
b2YgY29sb3IgYXR0YWNobWVudHMgaW4gcmVuZGVyIHBhc3NlcyBhbmQgYnVuZGxlcyBtdXN0IG1h
dGNoLgorICBgCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdSAvLworICAgICAgLy8gaW50cm9k
dWNlIGF0dGFjaG1lbnRDb3VudCB0byBtYWtlIGl0IGVhc2llciB0byBzcGxpdCB0aGUgdGVzdAor
ICAgICAgLmNvbWJpbmUoJ2F0dGFjaG1lbnRDb3VudCcsIGtDb2xvckF0dGFjaG1lbnRDb3VudHMp
CisgICAgICAuYmVnaW5TdWJjYXNlcygpCisgICAgICAuY29tYmluZSgncGFzc0F0dGFjaG1lbnRz
Jywga0NvbG9yQXR0YWNobWVudHMpCisgICAgICAuY29tYmluZSgnYnVuZGxlQXR0YWNobWVudHMn
LCBrQ29sb3JBdHRhY2htZW50cykKKyAgICAgIC5maWx0ZXIoCisgICAgICAgIHAgPT4KKyAgICAg
ICAgICBwLmF0dGFjaG1lbnRDb3VudCA9PT0gcC5wYXNzQXR0YWNobWVudHMubGVuZ3RoICYmCisg
ICAgICAgICAgcC5hdHRhY2htZW50Q291bnQgPT09IHAuYnVuZGxlQXR0YWNobWVudHMubGVuZ3Ro
CisgICAgICApCisgICkKKyAgLmZuKHQgPT4geworICAgIGNvbnN0IHsgcGFzc0F0dGFjaG1lbnRz
LCBidW5kbGVBdHRhY2htZW50cyB9ID0gdC5wYXJhbXM7CisgICAgY29uc3QgY29sb3JGb3JtYXRz
ID0gYnVuZGxlQXR0YWNobWVudHMubWFwKGkgPT4gKGkgPyAncmdiYTh1bm9ybScgOiBudWxsKSk7
CisgICAgY29uc3QgYnVuZGxlRW5jb2RlciA9IHQuZGV2aWNlLmNyZWF0ZVJlbmRlckJ1bmRsZUVu
Y29kZXIoeworICAgICAgY29sb3JGb3JtYXRzLAorICAgIH0pOworCisgICAgY29uc3QgYnVuZGxl
ID0gYnVuZGxlRW5jb2Rlci5maW5pc2goKTsKKworICAgIGNvbnN0IHsgZW5jb2RlciwgdmFsaWRh
dGVGaW5pc2hBbmRTdWJtaXQgfSA9IHQuY3JlYXRlRW5jb2Rlcignbm9uLXBhc3MnKTsKKyAgICBj
b25zdCBjb2xvckF0dGFjaG1lbnRzID0gcGFzc0F0dGFjaG1lbnRzLm1hcChpID0+CisgICAgICB0
LmNyZWF0ZUNvbG9yQXR0YWNobWVudChpID8gJ3JnYmE4dW5vcm0nIDogbnVsbCkKKyAgICApOwor
CisgICAgY29uc3QgcGFzcyA9IGVuY29kZXIuYmVnaW5SZW5kZXJQYXNzKHsKKyAgICAgIGNvbG9y
QXR0YWNobWVudHMsCisgICAgfSk7CisKKyAgICBwYXNzLmV4ZWN1dGVCdW5kbGVzKFtidW5kbGVd
KTsKKyAgICBwYXNzLmVuZCgpOworICAgIHZhbGlkYXRlRmluaXNoQW5kU3VibWl0KAorICAgICAg
cGFzc0F0dGFjaG1lbnRzLmV2ZXJ5KCh2LCBpKSA9PiB2ID09PSBidW5kbGVBdHRhY2htZW50c1tp
XSksCisgICAgICB0cnVlCisgICAgKTsKKyAgfSk7CisKIGcudGVzdCgncmVuZGVyX3Bhc3NfYW5k
X2J1bmRsZSxkZXB0aF9mb3JtYXQnKQogICAuZGVzYygnVGVzdCB0aGF0IHRoZSBkZXB0aCBhdHRh
Y2htZW50IGZvcm1hdCBpbiByZW5kZXIgcGFzc2VzIGFuZCBidW5kbGVzIG11c3QgbWF0Y2guJykK
ICAgLnBhcmFtc1N1YmNhc2VzT25seSh1ID0+CkBAIC0yNDIsOCArMzQxLDYgQEAgZy50ZXN0KCdy
ZW5kZXJfcGFzc19vcl9idW5kbGVfYW5kX3BpcGVsaW5lLGNvbG9yX2NvdW50JykKICAgICBgCiBU
ZXN0IHRoYXQgdGhlIG51bWJlciBvZiBjb2xvciBhdHRhY2htZW50cyBpbiByZW5kZXIgcGFzc2Vz
IG9yIGJ1bmRsZXMgbWF0Y2ggdGhlIHBpcGVsaW5lIGNvbG9yCiBjb3VudC4KLQotVE9ETzogQWRk
IHNwYXJzZSBjb2xvciBhdHRhY2htZW50IGNvbXBhdGliaWxpdHkgdGVzdCB3aGVuIGRlZmluZWQg
Ynkgc3BlY2lmaWNhdGlvbgogYAogICApCiAgIC5wYXJhbXModSA9PgpAQCAtMjY3LDYgKzM2NCw0
NyBAQCBUT0RPOiBBZGQgc3BhcnNlIGNvbG9yIGF0dGFjaG1lbnQgY29tcGF0aWJpbGl0eSB0ZXN0
IHdoZW4gZGVmaW5lZCBieSBzcGVjaWZpY2F0aQogICAgIHZhbGlkYXRlRmluaXNoQW5kU3VibWl0
KGVuY29kZXJDb3VudCA9PT0gcGlwZWxpbmVDb3VudCwgdHJ1ZSk7CiAgIH0pOwogCitnLnRlc3Qo
J3JlbmRlcl9wYXNzX29yX2J1bmRsZV9hbmRfcGlwZWxpbmUsY29sb3Jfc3BhcnNlJykKKyAgLmRl
c2MoCisgICAgYAorVGVzdCB0aGF0IGVhY2ggb2YgY29sb3IgYXR0YWNobWVudHMgaW4gcmVuZGVy
IHBhc3NlcyBvciBidW5kbGVzIG1hdGNoIHRoYXQgb2YgdGhlIHBpcGVsaW5lLgorYAorICApCisg
IC5wYXJhbXModSA9PgorICAgIHUKKyAgICAgIC5jb21iaW5lKCdlbmNvZGVyVHlwZScsIFsncmVu
ZGVyIHBhc3MnLCAncmVuZGVyIGJ1bmRsZSddKQorICAgICAgLy8gaW50cm9kdWNlIGF0dGFjaG1l
bnRDb3VudCB0byBtYWtlIGl0IGVhc2llciB0byBzcGxpdCB0aGUgdGVzdAorICAgICAgLmNvbWJp
bmUoJ2F0dGFjaG1lbnRDb3VudCcsIGtDb2xvckF0dGFjaG1lbnRDb3VudHMpCisgICAgICAuYmVn
aW5TdWJjYXNlcygpCisgICAgICAuY29tYmluZSgnZW5jb2RlckF0dGFjaG1lbnRzJywga0NvbG9y
QXR0YWNobWVudHMpCisgICAgICAuY29tYmluZSgncGlwZWxpbmVBdHRhY2htZW50cycsIGtDb2xv
ckF0dGFjaG1lbnRzKQorICAgICAgLmZpbHRlcigKKyAgICAgICAgcCA9PgorICAgICAgICAgIHAu
YXR0YWNobWVudENvdW50ID09PSBwLmVuY29kZXJBdHRhY2htZW50cy5sZW5ndGggJiYKKyAgICAg
ICAgICBwLmF0dGFjaG1lbnRDb3VudCA9PT0gcC5waXBlbGluZUF0dGFjaG1lbnRzLmxlbmd0aAor
ICAgICAgKQorICApCisgIC5mbih0ID0+IHsKKyAgICBjb25zdCB7IGVuY29kZXJUeXBlLCBlbmNv
ZGVyQXR0YWNobWVudHMsIHBpcGVsaW5lQXR0YWNobWVudHMgfSA9IHQucGFyYW1zOworCisgICAg
Y29uc3QgY29sb3JUYXJnZXRzID0gcGlwZWxpbmVBdHRhY2htZW50cy5tYXAoaSA9PgorICAgICAg
aSA/IHsgZm9ybWF0OiAncmdiYTh1bm9ybScsIHdyaXRlTWFzazogMCB9IDogbnVsbAorICAgICk7
CisKKyAgICBjb25zdCBwaXBlbGluZSA9IHQuY3JlYXRlUmVuZGVyUGlwZWxpbmUoY29sb3JUYXJn
ZXRzKTsKKworICAgIGNvbnN0IGNvbG9yRm9ybWF0cyA9IGVuY29kZXJBdHRhY2htZW50cy5tYXAo
aSA9PiAoaSA/ICdyZ2JhOHVub3JtJyA6IG51bGwpKTsKKyAgICBjb25zdCB7IGVuY29kZXIsIHZh
bGlkYXRlRmluaXNoQW5kU3VibWl0IH0gPSB0LmNyZWF0ZUVuY29kZXIoZW5jb2RlclR5cGUsIHsK
KyAgICAgIGF0dGFjaG1lbnRJbmZvOiB7IGNvbG9yRm9ybWF0cyB9LAorICAgIH0pOworCisgICAg
ZW5jb2Rlci5zZXRQaXBlbGluZShwaXBlbGluZSk7CisgICAgdmFsaWRhdGVGaW5pc2hBbmRTdWJt
aXQoCisgICAgICBlbmNvZGVyQXR0YWNobWVudHMuZXZlcnkoKHYsIGkpID0+IHYgPT09IHBpcGVs
aW5lQXR0YWNobWVudHNbaV0pLAorICAgICAgdHJ1ZQorICAgICk7CisgIH0pOworCiBnLnRlc3Qo
J3JlbmRlcl9wYXNzX29yX2J1bmRsZV9hbmRfcGlwZWxpbmUsZGVwdGhfZm9ybWF0JykKICAgLmRl
c2MoCiAgICAgYApAQCAtMjk3LDYgKzQzNSwxMzAgQEAgVGVzdCB0aGF0IHRoZSBkZXB0aCBhdHRh
Y2htZW50IGZvcm1hdCBpbiByZW5kZXIgcGFzc2VzIG9yIGJ1bmRsZXMgbWF0Y2ggdGhlIHBpcGUK
ICAgICB2YWxpZGF0ZUZpbmlzaEFuZFN1Ym1pdChlbmNvZGVyRm9ybWF0ID09PSBwaXBlbGluZUZv
cm1hdCwgdHJ1ZSk7CiAgIH0pOwogCitjb25zdCBrU3RlbmNpbEZhY2VTdGF0ZXMgPSBbCisgIHsg
ZmFpbE9wOiAna2VlcCcsIGRlcHRoRmFpbE9wOiAna2VlcCcsIHBhc3NPcDogJ2tlZXAnIH0sCisg
IHsgZmFpbE9wOiAnemVybycsIGRlcHRoRmFpbE9wOiAnemVybycsIHBhc3NPcDogJ3plcm8nIH0s
CitdOworCitnLnRlc3QoJ3JlbmRlcl9wYXNzX29yX2J1bmRsZV9hbmRfcGlwZWxpbmUsZGVwdGhf
c3RlbmNpbF9yZWFkX29ubHlfd3JpdGVfc3RhdGUnKQorICAuZGVzYygKKyAgICBgCitUZXN0IHRo
YXQgdGhlIGRlcHRoIHN0ZW5jaWwgcmVhZCBvbmx5IHN0YXRlIGluIHJlbmRlciBwYXNzZXMgb3Ig
YnVuZGxlcyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGRlcHRoIHN0ZW5jaWwgd3JpdGUgc3RhdGUg
b2YgdGhlIHBpcGVsaW5lLgorYAorICApCisgIC5wYXJhbXModSA9PgorICAgIHUKKyAgICAgIC5j
b21iaW5lKCdlbmNvZGVyVHlwZScsIFsncmVuZGVyIHBhc3MnLCAncmVuZGVyIGJ1bmRsZSddKQor
ICAgICAgLmNvbWJpbmUoJ2Zvcm1hdCcsIGtEZXB0aFN0ZW5jaWxBdHRhY2htZW50Rm9ybWF0cykK
KyAgICAgIC5iZWdpblN1YmNhc2VzKCkKKyAgICAgIC8vIHBhc3MvYnVuZGxlIHN0YXRlCisgICAg
ICAuY29tYmluZSgnZGVwdGhSZWFkT25seScsIFtmYWxzZSwgdHJ1ZV0pCisgICAgICAuY29tYmlu
ZSgnc3RlbmNpbFJlYWRPbmx5JywgW2ZhbHNlLCB0cnVlXSkKKyAgICAgIC5jb21iaW5lKCdzdGVu
Y2lsRnJvbnQnLCBrU3RlbmNpbEZhY2VTdGF0ZXMpCisgICAgICAuY29tYmluZSgnc3RlbmNpbEJh
Y2snLCBrU3RlbmNpbEZhY2VTdGF0ZXMpCisgICAgICAvLyBwaXBlbGluZSBzdGF0ZQorICAgICAg
LmNvbWJpbmUoJ2RlcHRoV3JpdGVFbmFibGVkJywgW2ZhbHNlLCB0cnVlXSkKKyAgICAgIC5jb21i
aW5lKCdzdGVuY2lsV3JpdGVNYXNrJywgWzAsIDB4ZmZmZmZmZmZdKQorICAgICAgLmNvbWJpbmUo
J2N1bGxNb2RlJywgWydub25lJywgJ2Zyb250JywgJ2JhY2snXSkKKyAgICAgIC5maWx0ZXIocCA9
PiB7CisgICAgICAgIGlmIChwLmZvcm1hdCkgeworICAgICAgICAgIGNvbnN0IGRlcHRoU3RlbmNp
bEluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bcC5mb3JtYXRdOworICAgICAgICAgIC8vIEZvciBj
b21iaW5lZCBkZXB0aC9zdGVuY2lsIGZvcm1hdHMgdGhlIGRlcHRoIGFuZCBzdGVuY2lsIHJlYWQg
b25seSBzdGF0ZSBtdXN0IG1hdGNoCisgICAgICAgICAgLy8gaW4gb3JkZXIgdG8gY3JlYXRlIGEg
dmFsaWQgcmVuZGVyIGJ1bmRsZSBvciByZW5kZXIgcGFzcy4KKyAgICAgICAgICBpZiAoZGVwdGhT
dGVuY2lsSW5mby5kZXB0aCAmJiBkZXB0aFN0ZW5jaWxJbmZvLnN0ZW5jaWwpIHsKKyAgICAgICAg
ICAgIGlmIChwLmRlcHRoUmVhZE9ubHkgIT09IHAuc3RlbmNpbFJlYWRPbmx5KSB7CisgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
ICAgLy8gSWYgdGhlIGZvcm1hdCBoYXMgbm8gZGVwdGggYXNwZWN0LCB0aGUgZGVwdGhSZWFkT25s
eSwgZGVwdGhXcml0ZUVuYWJsZWQgb2YgdGhlIHBpcGVsaW5lIG11c3Qgbm90IGJlIHRydWUKKyAg
ICAgICAgICAvLyBpbiBvcmRlciB0byBjcmVhdGUgYSB2YWxpZCByZW5kZXIgcGlwZWxpbmUuCisg
ICAgICAgICAgaWYgKCFkZXB0aFN0ZW5jaWxJbmZvLmRlcHRoICYmIHAuZGVwdGhXcml0ZUVuYWJs
ZWQpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAg
Ly8gSWYgdGhlIGZvcm1hdCBoYXMgbm8gc3RlbmNpbCBhc3BlY3QsIHRoZSBzdGVuY2lsIHN0YXRl
IG9wZXJhdGlvbiBtdXN0IGJlICdrZWVwJworICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGNyZWF0
ZSBhIHZhbGlkIHJlbmRlciBwaXBlbGluZS4KKyAgICAgICAgICBpZiAoCisgICAgICAgICAgICAh
ZGVwdGhTdGVuY2lsSW5mby5zdGVuY2lsICYmCisgICAgICAgICAgICAocC5zdGVuY2lsRnJvbnQu
ZmFpbE9wICE9PSAna2VlcCcgfHwgcC5zdGVuY2lsQmFjay5mYWlsT3AgIT09ICdrZWVwJykKKyAg
ICAgICAgICApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgLy8gTm8gZGVwdGhTdGVuY2lsIGF0dGFjaG1lbnQKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICB9KQorICApCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7
CisgICAgICBlbmNvZGVyVHlwZSwKKyAgICAgIGZvcm1hdCwKKyAgICAgIGRlcHRoUmVhZE9ubHks
CisgICAgICBzdGVuY2lsUmVhZE9ubHksCisgICAgICBkZXB0aFdyaXRlRW5hYmxlZCwKKyAgICAg
IHN0ZW5jaWxXcml0ZU1hc2ssCisgICAgICBjdWxsTW9kZSwKKyAgICAgIHN0ZW5jaWxGcm9udCwK
KyAgICAgIHN0ZW5jaWxCYWNrLAorICAgIH0gPSB0LnBhcmFtczsKKyAgICBhd2FpdCB0LnNlbGVj
dERldmljZUZvclRleHR1cmVGb3JtYXRPclNraXBUZXN0Q2FzZShmb3JtYXQpOworCisgICAgY29u
c3QgcGlwZWxpbmUgPSB0LmNyZWF0ZVJlbmRlclBpcGVsaW5lKAorICAgICAgW3sgZm9ybWF0OiAn
cmdiYTh1bm9ybScsIHdyaXRlTWFzazogMCB9XSwKKyAgICAgIGZvcm1hdCA9PT0gdW5kZWZpbmVk
CisgICAgICAgID8gdW5kZWZpbmVkCisgICAgICAgIDogeworICAgICAgICAgICAgZm9ybWF0LAor
ICAgICAgICAgICAgZGVwdGhXcml0ZUVuYWJsZWQsCisgICAgICAgICAgICBzdGVuY2lsV3JpdGVN
YXNrLAorICAgICAgICAgICAgc3RlbmNpbEZyb250LAorICAgICAgICAgICAgc3RlbmNpbEJhY2ss
CisgICAgICAgICAgfSwKKworICAgICAgMSwKKyAgICAgIGN1bGxNb2RlCisgICAgKTsKKworICAg
IGNvbnN0IHsgZW5jb2RlciwgdmFsaWRhdGVGaW5pc2hBbmRTdWJtaXQgfSA9IHQuY3JlYXRlRW5j
b2RlcihlbmNvZGVyVHlwZSwgeworICAgICAgYXR0YWNobWVudEluZm86IHsgY29sb3JGb3JtYXRz
OiBbJ3JnYmE4dW5vcm0nXSwgZGVwdGhTdGVuY2lsRm9ybWF0OiBmb3JtYXQgfSwKKyAgICB9KTsK
KworICAgIGVuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUpOworCisgICAgbGV0IHdyaXRlc0Rl
cHRoID0gZmFsc2U7CisgICAgbGV0IHdyaXRlc1N0ZW5jaWwgPSBmYWxzZTsKKyAgICBpZiAoZm9y
bWF0KSB7CisgICAgICB3cml0ZXNEZXB0aCA9IGRlcHRoV3JpdGVFbmFibGVkOworICAgICAgaWYg
KHN0ZW5jaWxXcml0ZU1hc2sgIT09IDApIHsKKyAgICAgICAgaWYgKAorICAgICAgICAgIGN1bGxN
b2RlICE9PSAnZnJvbnQnICYmCisgICAgICAgICAgKHN0ZW5jaWxGcm9udC5wYXNzT3AgIT09ICdr
ZWVwJyB8fAorICAgICAgICAgICAgc3RlbmNpbEZyb250LmRlcHRoRmFpbE9wICE9PSAna2VlcCcg
fHwKKyAgICAgICAgICAgIHN0ZW5jaWxGcm9udC5mYWlsT3AgIT09ICdrZWVwJykKKyAgICAgICAg
KSB7CisgICAgICAgICAgd3JpdGVzU3RlbmNpbCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKAorICAgICAgICAgIGN1bGxNb2RlICE9PSAnYmFjaycgJiYKKyAgICAgICAgICAoc3RlbmNp
bEJhY2sucGFzc09wICE9PSAna2VlcCcgfHwKKyAgICAgICAgICAgIHN0ZW5jaWxCYWNrLmRlcHRo
RmFpbE9wICE9PSAna2VlcCcgfHwKKyAgICAgICAgICAgIHN0ZW5jaWxCYWNrLmZhaWxPcCAhPT0g
J2tlZXAnKQorICAgICAgICApIHsKKyAgICAgICAgICB3cml0ZXNTdGVuY2lsID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTsKKyAgICBp
ZiAod3JpdGVzRGVwdGgpIHsKKyAgICAgIGlzVmFsaWQgJiY9ICFkZXB0aFJlYWRPbmx5OworICAg
IH0KKyAgICBpZiAod3JpdGVzU3RlbmNpbCkgeworICAgICAgaXNWYWxpZCAmJj0gIXN0ZW5jaWxS
ZWFkT25seTsKKyAgICB9CisKKyAgICB2YWxpZGF0ZUZpbmlzaEFuZFN1Ym1pdChpc1ZhbGlkLCB0
cnVlKTsKKyAgfSk7CisKIGcudGVzdCgncmVuZGVyX3Bhc3Nfb3JfYnVuZGxlX2FuZF9waXBlbGlu
ZSxzYW1wbGVfY291bnQnKQogICAuZGVzYygKICAgICBgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vYnVmZmVyL2NyZWF0ZS5z
cGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0
aW9uL2J1ZmZlci9jcmVhdGUuc3BlYy5qcwppbmRleCAxODU0NWMyYjc5MzQuLmM5ODdmOWY2YzEx
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92
YWxpZGF0aW9uL2J1ZmZlci9jcmVhdGUuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vYnVmZmVyL2NyZWF0ZS5zcGVjLmpzCkBA
IC05NSwxMCArOTUsNiBAQCBoaWRkZW4gYmVoaW5kIHRoZSAibW9yZSBzZXZlcmUiIHZhbGlkYXRp
b24gZXJyb3IuYAogICAgICAgeyB1c2FnZTogQnVmZmVyVXNhZ2UuTUFQX1JFQUQgfCBCdWZmZXJV
c2FnZS5VTklGT1JNLCBzaXplOiAxNiB9LAogICAgICAgeyB1c2FnZTogQnVmZmVyVXNhZ2UuTUFQ
X1JFQUQgfCBCdWZmZXJVc2FnZS5VTklGT1JNLCBzaXplOiBrTWF4U2FmZU11bHRpcGxlT2Y4IH0s
CiAgICAgICB7IHVzYWdlOiBCdWZmZXJVc2FnZS5NQVBfUkVBRCB8IEJ1ZmZlclVzYWdlLlVOSUZP
Uk0sIHNpemU6IDB4MjBfMDAwMF8wMDAwIH0sIC8vIDEyOCBHaUIKLSAgICAgIC8vIEludmFsaWQg
YmVjYXVzZSBzaXplIGlzIG5vdCBhbGlnbmVkIHRvIDQgYnl0ZXMuCi0gICAgICB7IHVzYWdlOiBC
dWZmZXJVc2FnZS5TVE9SQUdFLCBzaXplOiAxNSB9LAotICAgICAgeyB1c2FnZTogQnVmZmVyVXNh
Z2UuU1RPUkFHRSwgc2l6ZToga01heFNhZmVNdWx0aXBsZU9mOCAtIDEgfSwKLSAgICAgIHsgdXNh
Z2U6IEJ1ZmZlclVzYWdlLlNUT1JBR0UsIHNpemU6IDB4MjBfMDAwMF8wMDAwIC0gMSB9LCAvLyAx
MjggR2lCIC0gMQogICAgIF0pCiAgICkKICAgLmZuKHQgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZUJpbmRH
cm91cC5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92
YWxpZGF0aW9uL2NyZWF0ZUJpbmRHcm91cC5zcGVjLmpzCmluZGV4IDU0YmVmZTJkOTMyNy4uYTZi
YWZmYzY5YWNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvYXBpL3ZhbGlkYXRpb24vY3JlYXRlQmluZEdyb3VwLnNwZWMuanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZUJpbmRHcm91
cC5zcGVjLmpzCkBAIC01MTEsNyArNTExLDkgQEAgZy50ZXN0KCdiaW5kX2dyb3VwX2xheW91dCxk
ZXZpY2VfbWlzbWF0Y2gnKQogICAgICAgYXdhaXQgdC5zZWxlY3RNaXNtYXRjaGVkRGV2aWNlT3JT
a2lwVGVzdENhc2UodW5kZWZpbmVkKTsKICAgICB9CiAKLSAgICBjb25zdCBkZXNjcmlwdG9yID0g
eworICAgIGNvbnN0IGRldmljZSA9IG1pc21hdGNoZWQgPyB0Lm1pc21hdGNoZWREZXZpY2UgOiB0
LmRldmljZTsKKworICAgIGNvbnN0IGJnbCA9IGRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQo
ewogICAgICAgZW50cmllczogWwogICAgICAgICB7CiAgICAgICAgICAgYmluZGluZzogMCwKQEAg
LTUxOSwxMSArNTIxLDcgQEAgZy50ZXN0KCdiaW5kX2dyb3VwX2xheW91dCxkZXZpY2VfbWlzbWF0
Y2gnKQogICAgICAgICAgIGJ1ZmZlcjoge30sCiAgICAgICAgIH0sCiAgICAgICBdLAotICAgIH07
Ci0KLSAgICBjb25zdCBiZ2wgPSBtaXNtYXRjaGVkCi0gICAgICA/IHQubWlzbWF0Y2hlZERldmlj
ZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoZGVzY3JpcHRvcikKLSAgICAgIDogdC5kZXZpY2UuY3Jl
YXRlQmluZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpOworICAgIH0pOwogCiAgICAgdC5leHBlY3RW
YWxpZGF0aW9uRXJyb3IoKCkgPT4gewogICAgICAgdC5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFs
aWRhdGlvbi9jcmVhdGVCaW5kR3JvdXBMYXlvdXQuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9jcmVhdGVCaW5kR3JvdXBMYXlvdXQu
c3BlYy5qcwppbmRleCA1MWI2Y2JjMjY1ZDguLjIzZWM2YjcwYjBmYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZUJp
bmRHcm91cExheW91dC5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9jcmVhdGVCaW5kR3JvdXBMYXlvdXQuc3BlYy5qcwpAQCAt
OCw3ICs4LDYgQEAgVE9ETzogbWFrZSBzdXJlIHRlc3RzIGFyZSBjb21wbGV0ZS4KIGltcG9ydCB7
IGtVbml0Q2FzZVBhcmFtc0J1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZnJhbWV3b3Jr
L3BhcmFtc19idWlsZGVyLmpzJzsKIGltcG9ydCB7IG1ha2VUZXN0R3JvdXAgfSBmcm9tICcuLi8u
Li8uLi9jb21tb24vZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnOwogaW1wb3J0IHsKLSAga01heEJp
bmRpbmdzUGVyQmluZEdyb3VwLAogICBrU2hhZGVyU3RhZ2VzLAogICBrU2hhZGVyU3RhZ2VDb21i
aW5hdGlvbnMsCiAgIGtUZXh0dXJlVmlld0RpbWVuc2lvbnMsCkBAIC0yMDAsNiArMTk5LDcgQEAg
Zy50ZXN0KCdtYXhfcmVzb3VyY2VzX3Blcl9zdGFnZSxpbl9iaW5kX2dyb3VwX2xheW91dCcpCiAg
ICAgY29uc3QgeyBtYXhlZEVudHJ5LCBleHRyYUVudHJ5LCBtYXhlZFZpc2liaWxpdHksIGV4dHJh
VmlzaWJpbGl0eSB9ID0gdC5wYXJhbXM7CiAgICAgY29uc3QgbWF4ZWRUeXBlSW5mbyA9IGJpbmRp
bmdUeXBlSW5mbyhtYXhlZEVudHJ5KTsKICAgICBjb25zdCBtYXhlZENvdW50ID0gbWF4ZWRUeXBl
SW5mby5wZXJTdGFnZUxpbWl0Q2xhc3MubWF4OworICAgIGNvbnN0IGV4dHJhVHlwZUluZm8gPSBi
aW5kaW5nVHlwZUluZm8oZXh0cmFFbnRyeSk7CiAKICAgICBjb25zdCBtYXhSZXNvdXJjZUJpbmRp
bmdzID0gW107CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhlZENvdW50OyBpKyspIHsKQEAg
LTIxNSw2ICsyMTUsNyBAQCBnLnRlc3QoJ21heF9yZXNvdXJjZXNfcGVyX3N0YWdlLGluX2JpbmRf
Z3JvdXBfbGF5b3V0JykKICAgICAvLyBDb250cm9sCiAgICAgdC5kZXZpY2UuY3JlYXRlQmluZEdy
b3VwTGF5b3V0KGdvb2REZXNjcmlwdG9yKTsKIAorICAgIC8vIEFkZCBhbiBlbnRyeSBjb3VudGlu
ZyB0b3dhcmRzIHRoZSBzYW1lIGxpbWl0LiBJdCBzaG91bGQgcHJvZHVjZSBhIHZhbGlkYXRpb24g
ZXJyb3IuCiAgICAgY29uc3QgbmV3RGVzY3JpcHRvciA9IGNsb25lKGdvb2REZXNjcmlwdG9yKTsK
ICAgICBuZXdEZXNjcmlwdG9yLmVudHJpZXMucHVzaCh7CiAgICAgICBiaW5kaW5nOiBtYXhlZENv
dW50LApAQCAtMjIyLDExICsyMjMsMTMgQEAgZy50ZXN0KCdtYXhfcmVzb3VyY2VzX3Blcl9zdGFn
ZSxpbl9iaW5kX2dyb3VwX2xheW91dCcpCiAgICAgICAuLi5leHRyYUVudHJ5LAogICAgIH0pOwog
Ci0gICAgY29uc3Qgc2hvdWxkRXJyb3IgPSBtYXhlZENvdW50ID49IGtNYXhCaW5kaW5nc1BlckJp
bmRHcm91cDsKKyAgICBjb25zdCBuZXdCaW5kaW5nQ291bnRzVG93YXJkU2FtZVBlclN0YWdlTGlt
aXQgPQorICAgICAgKG1heGVkVmlzaWJpbGl0eSAmIGV4dHJhVmlzaWJpbGl0eSkgIT09IDAgJiYK
KyAgICAgIG1heGVkVHlwZUluZm8ucGVyU3RhZ2VMaW1pdENsYXNzLmNsYXNzID09PSBleHRyYVR5
cGVJbmZvLnBlclN0YWdlTGltaXRDbGFzcy5jbGFzczsKIAogICAgIHQuZXhwZWN0VmFsaWRhdGlv
bkVycm9yKCgpID0+IHsKICAgICAgIHQuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cExheW91dChuZXdE
ZXNjcmlwdG9yKTsKLSAgICB9LCBzaG91bGRFcnJvcik7CisgICAgfSwgbmV3QmluZGluZ0NvdW50
c1Rvd2FyZFNhbWVQZXJTdGFnZUxpbWl0KTsKICAgfSk7CiAKIC8vIE9uZSBwaXBlbGluZSBsYXlv
dXQgY2FuIGhhdmUgYSBtYXhpbXVtIG51bWJlciBvZiBlYWNoIHR5cGUgb2YgYmluZGluZyAqcGVy
IHN0YWdlKiAod2hpY2ggaXMKQEAgLTI3Nyw5ICsyODAsOCBAQCBnLnRlc3QoJ21heF9yZXNvdXJj
ZXNfcGVyX3N0YWdlLGluX3BpcGVsaW5lX2xheW91dCcpCiAgICAgY29uc3QgbmV3QmluZGluZ0Nv
dW50c1Rvd2FyZFNhbWVQZXJTdGFnZUxpbWl0ID0KICAgICAgIChtYXhlZFZpc2liaWxpdHkgJiBl
eHRyYVZpc2liaWxpdHkpICE9PSAwICYmCiAgICAgICBtYXhlZFR5cGVJbmZvLnBlclN0YWdlTGlt
aXRDbGFzcy5jbGFzcyA9PT0gZXh0cmFUeXBlSW5mby5wZXJTdGFnZUxpbWl0Q2xhc3MuY2xhc3M7
Ci0gICAgY29uc3QgbGF5b3V0RXhjZWVkc1BlclN0YWdlTGltaXQgPSBuZXdCaW5kaW5nQ291bnRz
VG93YXJkU2FtZVBlclN0YWdlTGltaXQ7CiAKICAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigo
KSA9PiB7CiAgICAgICB0LmRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExh
eW91dHM6IFtnb29kTGF5b3V0LCBleHRyYUxheW91dF0gfSk7Ci0gICAgfSwgbGF5b3V0RXhjZWVk
c1BlclN0YWdlTGltaXQpOworICAgIH0sIG5ld0JpbmRpbmdDb3VudHNUb3dhcmRTYW1lUGVyU3Rh
Z2VMaW1pdCk7CiAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZUNvbXB1dGVQaXBlbGluZS5zcGVjLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0
ZUNvbXB1dGVQaXBlbGluZS5zcGVjLmpzCmluZGV4IGQ0YmFmZjVlYjQ1MC4uMWEwZmVhOWQ4OGVm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3Zh
bGlkYXRpb24vY3JlYXRlQ29tcHV0ZVBpcGVsaW5lLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZUNvbXB1dGVQaXBl
bGluZS5zcGVjLmpzCkBAIC0xMzIsNiArMTMyLDcgQEAgVGhlIGVudHJ5UG9pbnQgYXNzaWduZWQg
aW4gZGVzY3JpcHRvciBpbmNsdWRlOgogLSBFbXB0eSBzdHJpbmcKIC0gTWlzdHlwaW5nCiAtIENv
bnRhaW5pbmcgaW52YWxpZCBjaGFyLCBpbmNsdWRpbmcgc3BhY2UgYW5kIGNvbnRyb2wgY29kZXMg
KE51bGwgY2hhcmFjdGVyKQorLSBVbmljb2RlIGVudHJ5cG9pbnRzIGFuZCB0aGVpciBBU0NJSWZp
ZWQgdmVyc2lvbgogYAogICApCiAgIC5wYXJhbXModSA9PgpAQCAtMTUxLDYgKzE1Miw4IEBAIFRo
ZSBlbnRyeVBvaW50IGFzc2lnbmVkIGluIGRlc2NyaXB0b3IgaW5jbHVkZToKICAgICAgIHsgc2hh
ZGVyTW9kdWxlRW50cnlQb2ludDogJ21haW5fdDEyVjMnLCBzdGFnZUVudHJ5UG9pbnQ6ICdtYWlu
X3QxMlYzJyB9LAogICAgICAgeyBzaGFkZXJNb2R1bGVFbnRyeVBvaW50OiAnbWFpbl90MTJWMycs
IHN0YWdlRW50cnlQb2ludDogJ21haW5fdDEyVjUnIH0sCiAgICAgICB7IHNoYWRlck1vZHVsZUVu
dHJ5UG9pbnQ6ICdtYWluX3QxMlYzJywgc3RhZ2VFbnRyeVBvaW50OiAnX21haW5fdDEyVjMnIH0s
CisgICAgICB7IHNoYWRlck1vZHVsZUVudHJ5UG9pbnQ6ICdzw6lxdWVuw6dhZ2UnLCBzdGFnZUVu
dHJ5UG9pbnQ6ICdzw6lxdWVuw6dhZ2UnIH0sCisgICAgICB7IHNoYWRlck1vZHVsZUVudHJ5UG9p
bnQ6ICdzw6lxdWVuw6dhZ2UnLCBzdGFnZUVudHJ5UG9pbnQ6ICdzZXF1ZW5jYWdlJyB9LAogICAg
IF0pCiAgICkKICAgLmZuKGFzeW5jIHQgPT4gewpAQCAtMTc4LDEwICsxODEsOSBAQCBnLnRlc3Qo
J3BpcGVsaW5lX2xheW91dCxkZXZpY2VfbWlzbWF0Y2gnKQogICAgICAgYXdhaXQgdC5zZWxlY3RN
aXNtYXRjaGVkRGV2aWNlT3JTa2lwVGVzdENhc2UodW5kZWZpbmVkKTsKICAgICB9CiAKLSAgICBj
b25zdCBsYXlvdXREZXNjcmlwdG9yID0geyBiaW5kR3JvdXBMYXlvdXRzOiBbXSB9OwotICAgIGNv
bnN0IGxheW91dCA9IG1pc21hdGNoZWQKLSAgICAgID8gdC5taXNtYXRjaGVkRGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KGxheW91dERlc2NyaXB0b3IpCi0gICAgICA6IHQuZGV2aWNlLmNyZWF0
ZVBpcGVsaW5lTGF5b3V0KGxheW91dERlc2NyaXB0b3IpOworICAgIGNvbnN0IGRldmljZSA9IG1p
c21hdGNoZWQgPyB0Lm1pc21hdGNoZWREZXZpY2UgOiB0LmRldmljZTsKKworICAgIGNvbnN0IGxh
eW91dCA9IGRldmljZS5jcmVhdGVQaXBlbGluZUxheW91dCh7IGJpbmRHcm91cExheW91dHM6IFtd
IH0pOwogCiAgICAgY29uc3QgZGVzY3JpcHRvciA9IHsKICAgICAgIGxheW91dCwKQEAgLTIwNiwx
MCArMjA4LDExIEBAIGcudGVzdCgnc2hhZGVyX21vZHVsZSxkZXZpY2VfbWlzbWF0Y2gnKQogICAg
ICAgYXdhaXQgdC5zZWxlY3RNaXNtYXRjaGVkRGV2aWNlT3JTa2lwVGVzdENhc2UodW5kZWZpbmVk
KTsKICAgICB9CiAKLSAgICBjb25zdCBjb2RlID0gJ0BzdGFnZShjb21wdXRlKSBAd29ya2dyb3Vw
X3NpemUoMSkgZm4gbWFpbigpIHt9JzsKLSAgICBjb25zdCBtb2R1bGUgPSBtaXNtYXRjaGVkCi0g
ICAgICA/IHQubWlzbWF0Y2hlZERldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlIH0pCi0g
ICAgICA6IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGUgfSk7CisgICAgY29uc3Qg
ZGV2aWNlID0gbWlzbWF0Y2hlZCA/IHQubWlzbWF0Y2hlZERldmljZSA6IHQuZGV2aWNlOworCisg
ICAgY29uc3QgbW9kdWxlID0gZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CisgICAgICBjb2Rl
OiAnQHN0YWdlKGNvbXB1dGUpIEB3b3JrZ3JvdXBfc2l6ZSgxKSBmbiBtYWluKCkge30nLAorICAg
IH0pOwogCiAgICAgY29uc3QgZGVzY3JpcHRvciA9IHsKICAgICAgIGNvbXB1dGU6IHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlv
bi9jcmVhdGVSZW5kZXJQaXBlbGluZS5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZVJlbmRlclBpcGVsaW5lLnNwZWMuanMK
aW5kZXggZWUwNmVmMDVjODA1Li4wODVmNDE2MTM5MjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9jcmVhdGVSZW5kZXJQaXBl
bGluZS5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvdmFsaWRhdGlvbi9jcmVhdGVSZW5kZXJQaXBlbGluZS5zcGVjLmpzCkBAIC02NzIsMTAgKzY3
Miw5IEBAIGcudGVzdCgncGlwZWxpbmVfbGF5b3V0LGRldmljZV9taXNtYXRjaCcpCiAgICAgICBh
d2FpdCB0LnNlbGVjdE1pc21hdGNoZWREZXZpY2VPclNraXBUZXN0Q2FzZSh1bmRlZmluZWQpOwog
ICAgIH0KIAotICAgIGNvbnN0IGxheW91dERlc2NyaXB0b3IgPSB7IGJpbmRHcm91cExheW91dHM6
IFtdIH07Ci0gICAgY29uc3QgbGF5b3V0ID0gbWlzbWF0Y2hlZAotICAgICAgPyB0Lm1pc21hdGNo
ZWREZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQobGF5b3V0RGVzY3JpcHRvcikKLSAgICAgIDog
dC5kZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQobGF5b3V0RGVzY3JpcHRvcik7CisgICAgY29u
c3QgZGV2aWNlID0gbWlzbWF0Y2hlZCA/IHQubWlzbWF0Y2hlZERldmljZSA6IHQuZGV2aWNlOwor
CisgICAgY29uc3QgbGF5b3V0ID0gZGV2aWNlLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KHsgYmluZEdy
b3VwTGF5b3V0czogW10gfSk7CiAKICAgICBjb25zdCBkZXNjcmlwdG9yID0gewogICAgICAgbGF5
b3V0LApAQCAtNzQ2LDMgKzc0NSw5IEBAIGcudGVzdCgnc2hhZGVyX21vZHVsZSxkZXZpY2VfbWlz
bWF0Y2gnKQogCiAgICAgdC5kb0NyZWF0ZVJlbmRlclBpcGVsaW5lVGVzdChpc0FzeW5jLCBfc3Vj
Y2VzcywgZGVzY3JpcHRvcik7CiAgIH0pOworCitnLnRlc3QoJ2VudHJ5X3BvaW50X25hbWVfbXVz
dF9tYXRjaCcpCisgIC5kZXNjKAorICAgICdUT0RPOiBUZXN0IHRoZSBtYXRjaGluZyBvZiBlbnRy
eXBvaW50IG5hbWVzIGZvciB2ZXJ0ZXggYW5kIGZyYWdtZW50IChzZWUgdGhlIGVxdWl2YWxlbnQg
dGVzdCBmb3IgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKS4nCisgICkKKyAgLnVuaW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
dmFsaWRhdGlvbi9jcmVhdGVUZXh0dXJlLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vY3JlYXRlVGV4dHVyZS5zcGVjLmpzCmluZGV4
IGU0MWY2YWNiYWM3Ni4uNTAyZGU1NjM3ZGUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vY3JlYXRlVGV4dHVyZS5zcGVjLmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlv
bi9jcmVhdGVUZXh0dXJlLnNwZWMuanMKQEAgLTEyLDggKzEyLDEwIEBAIGltcG9ydCB7CiAgIGtV
bmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cywKICAga1JlZ3VsYXJUZXh0dXJlRm9ybWF0cywKICAg
dGV4dHVyZURpbWVuc2lvbkFuZEZvcm1hdENvbXBhdGlibGUsCisgIGtMaW1pdEluZm8sCisgIHZp
ZXdDb21wYXRpYmxlLAogfSBmcm9tICcuLi8uLi9jYXBhYmlsaXR5X2luZm8uanMnOwotaW1wb3J0
IHsgRGVmYXVsdExpbWl0cywgR1BVQ29uc3QgfSBmcm9tICcuLi8uLi9jb25zdGFudHMuanMnOwor
aW1wb3J0IHsgR1BVQ29uc3QgfSBmcm9tICcuLi8uLi9jb25zdGFudHMuanMnOwogaW1wb3J0IHsg
bWF4TWlwTGV2ZWxDb3VudCB9IGZyb20gJy4uLy4uL3V0aWwvdGV4dHVyZS9iYXNlLmpzJzsKIAog
aW1wb3J0IHsgVmFsaWRhdGlvblRlc3QgfSBmcm9tICcuL3ZhbGlkYXRpb25fdGVzdC5qcyc7CkBA
IC0yODUsNyArMjg3LDggQEAgZy50ZXN0KCdzYW1wbGVDb3VudCx2YWxpZF9zYW1wbGVDb3VudF93
aXRoX290aGVyX3BhcmFtZXRlcl92YXJpZXMnKQogICAgICAgLnVubGVzcygoeyBzYW1wbGVDb3Vu
dCwgdXNhZ2UsIGZvcm1hdCwgbWlwTGV2ZWxDb3VudCwgZGltZW5zaW9uIH0pID0+IHsKICAgICAg
ICAgY29uc3QgaW5mbyA9IGtUZXh0dXJlRm9ybWF0SW5mb1tmb3JtYXRdOwogICAgICAgICByZXR1
cm4gKAotICAgICAgICAgICgodXNhZ2UgJiBHUFVDb25zdC5UZXh0dXJlVXNhZ2UuUkVOREVSX0FU
VEFDSE1FTlQpICE9PSAwICYmICFpbmZvLnJlbmRlcmFibGUpIHx8CisgICAgICAgICAgKCh1c2Fn
ZSAmIEdQVUNvbnN0LlRleHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCkgIT09IDAgJiYKKyAg
ICAgICAgICAgICghaW5mby5yZW5kZXJhYmxlIHx8IGRpbWVuc2lvbiAhPT0gJzJkJykpIHx8CiAg
ICAgICAgICAgKCh1c2FnZSAmIEdQVUNvbnN0LlRleHR1cmVVc2FnZS5TVE9SQUdFX0JJTkRJTkcp
ICE9PSAwICYmICFpbmZvLnN0b3JhZ2UpIHx8CiAgICAgICAgICAgKG1pcExldmVsQ291bnQgIT09
IDEgJiYgZGltZW5zaW9uID09PSAnMWQnKSB8fAogICAgICAgICAgIChzYW1wbGVDb3VudCA+IDEg
JiYgIWluZm8ubXVsdGlzYW1wbGUpCkBAIC00MDEsOSArNDA0LDkgQEAgZy50ZXN0KCd0ZXh0dXJl
X3NpemUsMWRfdGV4dHVyZScpCiAgICAgICAvLyBDb21wcmVzc2VkIGFuZCBkZXB0aC1zdGVuY2ls
IHRleHR1cmVzIGFyZSBpbnZhbGlkIGZvciAxRC4KICAgICAgIC5jb21iaW5lKCdmb3JtYXQnLCBr
UmVndWxhclRleHR1cmVGb3JtYXRzKQogICAgICAgLmNvbWJpbmUoJ3dpZHRoJywgWwotICAgICAg
ICBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCAtIDEsCi0gICAgICAgIERlZmF1
bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFELAotICAgICAgICBEZWZhdWx0TGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24xRCArIDEsCisgICAgICAgIGtMaW1pdEluZm8ubWF4VGV4dHVyZURp
bWVuc2lvbjFELmRlZmF1bHQgLSAxLAorICAgICAgICBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1l
bnNpb24xRC5kZWZhdWx0LAorICAgICAgICBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24x
RC5kZWZhdWx0ICsgMSwKICAgICAgIF0pCiAgICAgICAuY29tYmluZSgnaGVpZ2h0JywgWzEsIDJd
KQogICAgICAgLmNvbWJpbmUoJ2RlcHRoT3JBcnJheUxheWVycycsIFsxLCAyXSkKQEAgLTQyMCw3
ICs0MjMsNyBAQCBnLnRlc3QoJ3RleHR1cmVfc2l6ZSwxZF90ZXh0dXJlJykKICAgICB9OwogCiAg
ICAgY29uc3Qgc3VjY2VzcyA9Ci0gICAgICB3aWR0aCA8PSBEZWZhdWx0TGltaXRzLm1heFRleHR1
cmVEaW1lbnNpb24xRCAmJiBoZWlnaHQgPT09IDEgJiYgZGVwdGhPckFycmF5TGF5ZXJzID09PSAx
OworICAgICAgd2lkdGggPD0ga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uMUQuZGVmYXVs
dCAmJiBoZWlnaHQgPT09IDEgJiYgZGVwdGhPckFycmF5TGF5ZXJzID09PSAxOwogCiAgICAgdC5l
eHBlY3RWYWxpZGF0aW9uRXJyb3IoKCkgPT4gewogICAgICAgdC5kZXZpY2UuY3JlYXRlVGV4dHVy
ZShkZXNjcmlwdG9yKTsKQEAgLTQzNSwxNyArNDM4LDE3IEBAIGcudGVzdCgndGV4dHVyZV9zaXpl
LDJkX3RleHR1cmUsdW5jb21wcmVzc2VkX2Zvcm1hdCcpCiAgICAgICAuY29tYmluZSgnZm9ybWF0
Jywga1VuY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKQogICAgICAgLmNvbWJpbmUoJ3NpemUnLCBb
CiAgICAgICAgIC8vIFRlc3QgdGhlIGJvdW5kIG9mIHdpZHRoCi0gICAgICAgIFtEZWZhdWx0TGlt
aXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCAtIDEsIDEsIDFdLAotICAgICAgICBbRGVmYXVsdExp
bWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQsIDEsIDFdLAotICAgICAgICBbRGVmYXVsdExpbWl0
cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQgKyAxLCAxLCAxXSwKKyAgICAgICAgW2tMaW1pdEluZm8u
bWF4VGV4dHVyZURpbWVuc2lvbjJELmRlZmF1bHQgLSAxLCAxLCAxXSwKKyAgICAgICAgW2tMaW1p
dEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjJELmRlZmF1bHQsIDEsIDFdLAorICAgICAgICBba0xp
bWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCArIDEsIDEsIDFdLAogICAgICAg
ICAvLyBUZXN0IHRoZSBib3VuZCBvZiBoZWlnaHQKLSAgICAgICAgWzEsIERlZmF1bHRMaW1pdHMu
bWF4VGV4dHVyZURpbWVuc2lvbjJEIC0gMSwgMV0sCi0gICAgICAgIFsxLCBEZWZhdWx0TGltaXRz
Lm1heFRleHR1cmVEaW1lbnNpb24yRCwgMV0sCi0gICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24yRCArIDEsIDFdLAorICAgICAgICBbMSwga0xpbWl0SW5mby5tYXhU
ZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCAtIDEsIDFdLAorICAgICAgICBbMSwga0xpbWl0SW5m
by5tYXhUZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCwgMV0sCisgICAgICAgIFsxLCBrTGltaXRJ
bmZvLm1heFRleHR1cmVEaW1lbnNpb24yRC5kZWZhdWx0ICsgMSwgMV0sCiAgICAgICAgIC8vIFRl
c3QgdGhlIGJvdW5kIG9mIGFycmF5IGxheWVycwotICAgICAgICBbMSwgMSwgRGVmYXVsdExpbWl0
cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMgLSAxXSwKLSAgICAgICAgWzEsIDEsIERlZmF1bHRMaW1p
dHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzXSwKLSAgICAgICAgWzEsIDEsIERlZmF1bHRMaW1pdHMu
bWF4VGV4dHVyZUFycmF5TGF5ZXJzICsgMV0sCisgICAgICAgIFsxLCAxLCBrTGltaXRJbmZvLm1h
eFRleHR1cmVBcnJheUxheWVycy5kZWZhdWx0IC0gMV0sCisgICAgICAgIFsxLCAxLCBrTGltaXRJ
bmZvLm1heFRleHR1cmVBcnJheUxheWVycy5kZWZhdWx0XSwKKyAgICAgICAgWzEsIDEsIGtMaW1p
dEluZm8ubWF4VGV4dHVyZUFycmF5TGF5ZXJzLmRlZmF1bHQgKyAxXSwKICAgICAgIF0pCiAgICkK
ICAgLmZuKGFzeW5jIHQgPT4gewpAQCAtNDYwLDkgKzQ2Myw5IEBAIGcudGVzdCgndGV4dHVyZV9z
aXplLDJkX3RleHR1cmUsdW5jb21wcmVzc2VkX2Zvcm1hdCcpCiAgICAgfTsKIAogICAgIGNvbnN0
IHN1Y2Nlc3MgPQotICAgICAgc2l6ZVswXSA8PSBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1l
bnNpb24yRCAmJgotICAgICAgc2l6ZVsxXSA8PSBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1l
bnNpb24yRCAmJgotICAgICAgc2l6ZVsyXSA8PSBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVBcnJh
eUxheWVyczsKKyAgICAgIHNpemVbMF0gPD0ga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9u
MkQuZGVmYXVsdCAmJgorICAgICAgc2l6ZVsxXSA8PSBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1l
bnNpb24yRC5kZWZhdWx0ICYmCisgICAgICBzaXplWzJdIDw9IGtMaW1pdEluZm8ubWF4VGV4dHVy
ZUFycmF5TGF5ZXJzLmRlZmF1bHQ7CiAKICAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9
PiB7CiAgICAgICB0LmRldmljZS5jcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3IpOwpAQCAtNDc5LDM2
ICs0ODIsMzYgQEAgZy50ZXN0KCd0ZXh0dXJlX3NpemUsMmRfdGV4dHVyZSxjb21wcmVzc2VkX2Zv
cm1hdCcpCiAgICAgICAgIGNvbnN0IHsgYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHQgfSA9IGtUZXh0
dXJlRm9ybWF0SW5mb1twLmZvcm1hdF07CiAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgLy8g
VGVzdCB0aGUgYm91bmQgb2Ygd2lkdGgKLSAgICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhUZXh0
dXJlRGltZW5zaW9uMkQgLSAxLCAxLCAxXSwKLSAgICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhU
ZXh0dXJlRGltZW5zaW9uMkQgLSBibG9ja1dpZHRoLCAxLCAxXSwKLSAgICAgICAgICBbRGVmYXVs
dExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQgLSBibG9ja1dpZHRoLCBibG9ja0hlaWdodCwg
MV0sCi0gICAgICAgICAgW0RlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJELCAxLCAx
XSwKLSAgICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQsIGJsb2Nr
SGVpZ2h0LCAxXSwKLSAgICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9u
MkQgKyAxLCAxLCAxXSwKLSAgICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5z
aW9uMkQgKyBibG9ja1dpZHRoLCAxLCAxXSwKLSAgICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhU
ZXh0dXJlRGltZW5zaW9uMkQgKyBibG9ja1dpZHRoLCBibG9ja0hlaWdodCwgMV0sCisgICAgICAg
ICAgW2tMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjJELmRlZmF1bHQgLSAxLCAxLCAxXSwK
KyAgICAgICAgICBba0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCAtIGJs
b2NrV2lkdGgsIDEsIDFdLAorICAgICAgICAgIFtrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNp
b24yRC5kZWZhdWx0IC0gYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHQsIDFdLAorICAgICAgICAgIFtr
TGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24yRC5kZWZhdWx0LCAxLCAxXSwKKyAgICAgICAg
ICBba0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCwgYmxvY2tIZWlnaHQs
IDFdLAorICAgICAgICAgIFtrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24yRC5kZWZhdWx0
ICsgMSwgMSwgMV0sCisgICAgICAgICAgW2tMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjJE
LmRlZmF1bHQgKyBibG9ja1dpZHRoLCAxLCAxXSwKKyAgICAgICAgICBba0xpbWl0SW5mby5tYXhU
ZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCArIGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCAxXSwK
ICAgICAgICAgICAvLyBUZXN0IHRoZSBib3VuZCBvZiBoZWlnaHQKLSAgICAgICAgICBbMSwgRGVm
YXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQgLSAxLCAxXSwKLSAgICAgICAgICBbMSwg
RGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQgLSBibG9ja0hlaWdodCwgMV0sCi0g
ICAgICAgICAgW2Jsb2NrV2lkdGgsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJE
IC0gYmxvY2tIZWlnaHQsIDFdLAotICAgICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1
cmVEaW1lbnNpb24yRCwgMV0sCi0gICAgICAgICAgW2Jsb2NrV2lkdGgsIERlZmF1bHRMaW1pdHMu
bWF4VGV4dHVyZURpbWVuc2lvbjJELCAxXSwKLSAgICAgICAgICBbMSwgRGVmYXVsdExpbWl0cy5t
YXhUZXh0dXJlRGltZW5zaW9uMkQgKyAxLCAxXSwKLSAgICAgICAgICBbMSwgRGVmYXVsdExpbWl0
cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQgKyBibG9ja1dpZHRoLCAxXSwKLSAgICAgICAgICBbYmxv
Y2tXaWR0aCwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQgKyBibG9ja0hlaWdo
dCwgMV0sCisgICAgICAgICAgWzEsIGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjJELmRl
ZmF1bHQgLSAxLCAxXSwKKyAgICAgICAgICBbMSwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5z
aW9uMkQuZGVmYXVsdCAtIGJsb2NrSGVpZ2h0LCAxXSwKKyAgICAgICAgICBbYmxvY2tXaWR0aCwg
a0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCAtIGJsb2NrSGVpZ2h0LCAx
XSwKKyAgICAgICAgICBbMSwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVs
dCwgMV0sCisgICAgICAgICAgW2Jsb2NrV2lkdGgsIGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVu
c2lvbjJELmRlZmF1bHQsIDFdLAorICAgICAgICAgIFsxLCBrTGltaXRJbmZvLm1heFRleHR1cmVE
aW1lbnNpb24yRC5kZWZhdWx0ICsgMSwgMV0sCisgICAgICAgICAgWzEsIGtMaW1pdEluZm8ubWF4
VGV4dHVyZURpbWVuc2lvbjJELmRlZmF1bHQgKyBibG9ja1dpZHRoLCAxXSwKKyAgICAgICAgICBb
YmxvY2tXaWR0aCwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uMkQuZGVmYXVsdCArIGJs
b2NrSGVpZ2h0LCAxXSwKICAgICAgICAgICAvLyBUZXN0IHRoZSBib3VuZCBvZiBhcnJheSBsYXll
cnMKLSAgICAgICAgICBbMSwgMSwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMg
LSAxXSwKLSAgICAgICAgICBbYmxvY2tXaWR0aCwgMSwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJl
QXJyYXlMYXllcnMgLSAxXSwKLSAgICAgICAgICBbMSwgYmxvY2tIZWlnaHQsIERlZmF1bHRMaW1p
dHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzIC0gMV0sCi0gICAgICAgICAgW2Jsb2NrV2lkdGgsIGJs
b2NrSGVpZ2h0LCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycyAtIDFdLAotICAg
ICAgICAgIFsxLCAxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVBcnJheUxheWVyc10sCi0gICAg
ICAgICAgW2Jsb2NrV2lkdGgsIDEsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJz
XSwKLSAgICAgICAgICBbMSwgYmxvY2tIZWlnaHQsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZUFy
cmF5TGF5ZXJzXSwKLSAgICAgICAgICBbYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHQsIERlZmF1bHRM
aW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzXSwKLSAgICAgICAgICBbMSwgMSwgRGVmYXVsdExp
bWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMgKyAxXSwKLSAgICAgICAgICBbYmxvY2tXaWR0aCwg
MSwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMgKyAxXSwKLSAgICAgICAgICBb
MSwgYmxvY2tIZWlnaHQsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzICsgMV0s
Ci0gICAgICAgICAgW2Jsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCBEZWZhdWx0TGltaXRzLm1heFRl
eHR1cmVBcnJheUxheWVycyArIDFdLAorICAgICAgICAgIFsxLCAxLCBrTGltaXRJbmZvLm1heFRl
eHR1cmVBcnJheUxheWVycy5kZWZhdWx0IC0gMV0sCisgICAgICAgICAgW2Jsb2NrV2lkdGgsIDEs
IGtMaW1pdEluZm8ubWF4VGV4dHVyZUFycmF5TGF5ZXJzLmRlZmF1bHQgLSAxXSwKKyAgICAgICAg
ICBbMSwgYmxvY2tIZWlnaHQsIGtMaW1pdEluZm8ubWF4VGV4dHVyZUFycmF5TGF5ZXJzLmRlZmF1
bHQgLSAxXSwKKyAgICAgICAgICBbYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHQsIGtMaW1pdEluZm8u
bWF4VGV4dHVyZUFycmF5TGF5ZXJzLmRlZmF1bHQgLSAxXSwKKyAgICAgICAgICBbMSwgMSwga0xp
bWl0SW5mby5tYXhUZXh0dXJlQXJyYXlMYXllcnMuZGVmYXVsdF0sCisgICAgICAgICAgW2Jsb2Nr
V2lkdGgsIDEsIGtMaW1pdEluZm8ubWF4VGV4dHVyZUFycmF5TGF5ZXJzLmRlZmF1bHRdLAorICAg
ICAgICAgIFsxLCBibG9ja0hlaWdodCwga0xpbWl0SW5mby5tYXhUZXh0dXJlQXJyYXlMYXllcnMu
ZGVmYXVsdF0sCisgICAgICAgICAgW2Jsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCBrTGltaXRJbmZv
Lm1heFRleHR1cmVBcnJheUxheWVycy5kZWZhdWx0XSwKKyAgICAgICAgICBbMSwgMSwga0xpbWl0
SW5mby5tYXhUZXh0dXJlQXJyYXlMYXllcnMuZGVmYXVsdCArIDFdLAorICAgICAgICAgIFtibG9j
a1dpZHRoLCAxLCBrTGltaXRJbmZvLm1heFRleHR1cmVBcnJheUxheWVycy5kZWZhdWx0ICsgMV0s
CisgICAgICAgICAgWzEsIGJsb2NrSGVpZ2h0LCBrTGltaXRJbmZvLm1heFRleHR1cmVBcnJheUxh
eWVycy5kZWZhdWx0ICsgMV0sCisgICAgICAgICAgW2Jsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCBr
TGltaXRJbmZvLm1heFRleHR1cmVBcnJheUxheWVycy5kZWZhdWx0ICsgMV0sCiAgICAgICAgIF07
CiAgICAgICB9KQogICApCkBAIC01MjcsOSArNTMwLDkgQEAgZy50ZXN0KCd0ZXh0dXJlX3NpemUs
MmRfdGV4dHVyZSxjb21wcmVzc2VkX2Zvcm1hdCcpCiAgICAgY29uc3Qgc3VjY2VzcyA9CiAgICAg
ICBzaXplWzBdICUgaW5mby5ibG9ja1dpZHRoID09PSAwICYmCiAgICAgICBzaXplWzFdICUgaW5m
by5ibG9ja0hlaWdodCA9PT0gMCAmJgotICAgICAgc2l6ZVswXSA8PSBEZWZhdWx0TGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24yRCAmJgotICAgICAgc2l6ZVsxXSA8PSBEZWZhdWx0TGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24yRCAmJgotICAgICAgc2l6ZVsyXSA8PSBEZWZhdWx0TGltaXRzLm1h
eFRleHR1cmVBcnJheUxheWVyczsKKyAgICAgIHNpemVbMF0gPD0ga0xpbWl0SW5mby5tYXhUZXh0
dXJlRGltZW5zaW9uMkQuZGVmYXVsdCAmJgorICAgICAgc2l6ZVsxXSA8PSBrTGltaXRJbmZvLm1h
eFRleHR1cmVEaW1lbnNpb24yRC5kZWZhdWx0ICYmCisgICAgICBzaXplWzJdIDw9IGtMaW1pdElu
Zm8ubWF4VGV4dHVyZUFycmF5TGF5ZXJzLmRlZmF1bHQ7CiAKICAgICB0LmV4cGVjdFZhbGlkYXRp
b25FcnJvcigoKSA9PiB7CiAgICAgICB0LmRldmljZS5jcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3Ip
OwpAQCAtNTQ1LDE3ICs1NDgsMTcgQEAgZy50ZXN0KCd0ZXh0dXJlX3NpemUsM2RfdGV4dHVyZSx1
bmNvbXByZXNzZWRfZm9ybWF0JykKICAgICAgIC5jb21iaW5lKCdmb3JtYXQnLCBrUmVndWxhclRl
eHR1cmVGb3JtYXRzKQogICAgICAgLmNvbWJpbmUoJ3NpemUnLCBbCiAgICAgICAgIC8vIFRlc3Qg
dGhlIGJvdW5kIG9mIHdpZHRoCi0gICAgICAgIFtEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1l
bnNpb24zRCAtIDEsIDEsIDFdLAotICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGlt
ZW5zaW9uM0QsIDEsIDFdLAotICAgICAgICBbRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5z
aW9uM0QgKyAxLCAxLCAxXSwKKyAgICAgICAgW2tMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lv
bjNELmRlZmF1bHQgLSAxLCAxLCAxXSwKKyAgICAgICAgW2tMaW1pdEluZm8ubWF4VGV4dHVyZURp
bWVuc2lvbjNELmRlZmF1bHQsIDEsIDFdLAorICAgICAgICBba0xpbWl0SW5mby5tYXhUZXh0dXJl
RGltZW5zaW9uM0QuZGVmYXVsdCArIDEsIDEsIDFdLAogICAgICAgICAvLyBUZXN0IHRoZSBib3Vu
ZCBvZiBoZWlnaHQKLSAgICAgICAgWzEsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lv
bjNEIC0gMSwgMV0sCi0gICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNp
b24zRCwgMV0sCi0gICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24z
RCArIDEsIDFdLAorICAgICAgICBbMSwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0Qu
ZGVmYXVsdCAtIDEsIDFdLAorICAgICAgICBbMSwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5z
aW9uM0QuZGVmYXVsdCwgMV0sCisgICAgICAgIFsxLCBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1l
bnNpb24zRC5kZWZhdWx0ICsgMSwgMV0sCiAgICAgICAgIC8vIFRlc3QgdGhlIGJvdW5kIG9mIGRl
cHRoCi0gICAgICAgIFsxLCAxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCAt
IDFdLAotICAgICAgICBbMSwgMSwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0Rd
LAotICAgICAgICBbMSwgMSwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QgKyAx
XSwKKyAgICAgICAgWzEsIDEsIGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1
bHQgLSAxXSwKKyAgICAgICAgWzEsIDEsIGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNE
LmRlZmF1bHRdLAorICAgICAgICBbMSwgMSwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9u
M0QuZGVmYXVsdCArIDFdLAogICAgICAgXSkKICAgKQogICAuZm4oYXN5bmMgdCA9PiB7CkBAIC01
NzAsOSArNTczLDkgQEAgZy50ZXN0KCd0ZXh0dXJlX3NpemUsM2RfdGV4dHVyZSx1bmNvbXByZXNz
ZWRfZm9ybWF0JykKICAgICB9OwogCiAgICAgY29uc3Qgc3VjY2VzcyA9Ci0gICAgICBzaXplWzBd
IDw9IERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEICYmCi0gICAgICBzaXplWzFd
IDw9IERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEICYmCi0gICAgICBzaXplWzJd
IDw9IERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEOworICAgICAgc2l6ZVswXSA8
PSBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0ICYmCisgICAgICBzaXpl
WzFdIDw9IGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1bHQgJiYKKyAgICAg
IHNpemVbMl0gPD0ga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdDsKIAog
ICAgIHQuZXhwZWN0VmFsaWRhdGlvbkVycm9yKCgpID0+IHsKICAgICAgIHQuZGV2aWNlLmNyZWF0
ZVRleHR1cmUoZGVzY3JpcHRvcik7CkBAIC01ODgsMzYgKzU5MSwzNiBAQCBnLnRlc3QoJ3RleHR1
cmVfc2l6ZSwzZF90ZXh0dXJlLGNvbXByZXNzZWRfZm9ybWF0JykKICAgICAgICAgY29uc3QgeyBi
bG9ja1dpZHRoLCBibG9ja0hlaWdodCB9ID0ga1RleHR1cmVGb3JtYXRJbmZvW3AuZm9ybWF0XTsK
ICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAvLyBUZXN0IHRoZSBib3VuZCBvZiB3aWR0aAot
ICAgICAgICAgIFtEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCAtIDEsIDEsIDFd
LAotICAgICAgICAgIFtEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCAtIGJsb2Nr
V2lkdGgsIDEsIDFdLAotICAgICAgICAgIFtEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNp
b24zRCAtIGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCAxXSwKLSAgICAgICAgICBbRGVmYXVsdExp
bWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QsIDEsIDFdLAotICAgICAgICAgIFtEZWZhdWx0TGlt
aXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCwgYmxvY2tIZWlnaHQsIDFdLAotICAgICAgICAgIFtE
ZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCArIDEsIDEsIDFdLAotICAgICAgICAg
IFtEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCArIGJsb2NrV2lkdGgsIDEsIDFd
LAotICAgICAgICAgIFtEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCArIGJsb2Nr
V2lkdGgsIGJsb2NrSGVpZ2h0LCAxXSwKKyAgICAgICAgICBba0xpbWl0SW5mby5tYXhUZXh0dXJl
RGltZW5zaW9uM0QuZGVmYXVsdCAtIDEsIDEsIDFdLAorICAgICAgICAgIFtrTGltaXRJbmZvLm1h
eFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0IC0gYmxvY2tXaWR0aCwgMSwgMV0sCisgICAgICAg
ICAgW2tMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1bHQgLSBibG9ja1dpZHRo
LCBibG9ja0hlaWdodCwgMV0sCisgICAgICAgICAgW2tMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVu
c2lvbjNELmRlZmF1bHQsIDEsIDFdLAorICAgICAgICAgIFtrTGltaXRJbmZvLm1heFRleHR1cmVE
aW1lbnNpb24zRC5kZWZhdWx0LCBibG9ja0hlaWdodCwgMV0sCisgICAgICAgICAgW2tMaW1pdElu
Zm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1bHQgKyAxLCAxLCAxXSwKKyAgICAgICAgICBb
a0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdCArIGJsb2NrV2lkdGgsIDEs
IDFdLAorICAgICAgICAgIFtrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0
ICsgYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHQsIDFdLAogICAgICAgICAgIC8vIFRlc3QgdGhlIGJv
dW5kIG9mIGhlaWdodAotICAgICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1l
bnNpb24zRCAtIDEsIDFdLAotICAgICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVE
aW1lbnNpb24zRCAtIGJsb2NrSGVpZ2h0LCAxXSwKLSAgICAgICAgICBbYmxvY2tXaWR0aCwgRGVm
YXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QgLSBibG9ja0hlaWdodCwgMV0sCi0gICAg
ICAgICAgWzEsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELCAxXSwKLSAgICAg
ICAgICBbYmxvY2tXaWR0aCwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QsIDFd
LAotICAgICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCArIDEs
IDFdLAotICAgICAgICAgIFsxLCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCAr
IGJsb2NrV2lkdGgsIDFdLAotICAgICAgICAgIFtibG9ja1dpZHRoLCBEZWZhdWx0TGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24zRCArIGJsb2NrSGVpZ2h0LCAxXSwKKyAgICAgICAgICBbMSwga0xp
bWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdCAtIDEsIDFdLAorICAgICAgICAg
IFsxLCBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0IC0gYmxvY2tIZWln
aHQsIDFdLAorICAgICAgICAgIFtibG9ja1dpZHRoLCBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1l
bnNpb24zRC5kZWZhdWx0IC0gYmxvY2tIZWlnaHQsIDFdLAorICAgICAgICAgIFsxLCBrTGltaXRJ
bmZvLm1heFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0LCAxXSwKKyAgICAgICAgICBbYmxvY2tX
aWR0aCwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdCwgMV0sCisgICAg
ICAgICAgWzEsIGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1bHQgKyAxLCAx
XSwKKyAgICAgICAgICBbMSwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVs
dCArIGJsb2NrV2lkdGgsIDFdLAorICAgICAgICAgIFtibG9ja1dpZHRoLCBrTGltaXRJbmZvLm1h
eFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0ICsgYmxvY2tIZWlnaHQsIDFdLAogICAgICAgICAg
IC8vIFRlc3QgdGhlIGJvdW5kIG9mIGRlcHRoCi0gICAgICAgICAgWzEsIDEsIERlZmF1bHRMaW1p
dHMubWF4VGV4dHVyZURpbWVuc2lvbjNEIC0gMV0sCi0gICAgICAgICAgW2Jsb2NrV2lkdGgsIDEs
IERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEIC0gMV0sCi0gICAgICAgICAgWzEs
IGJsb2NrSGVpZ2h0LCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCAtIDFdLAot
ICAgICAgICAgIFtibG9ja1dpZHRoLCBibG9ja0hlaWdodCwgRGVmYXVsdExpbWl0cy5tYXhUZXh0
dXJlRGltZW5zaW9uM0QgLSAxXSwKLSAgICAgICAgICBbMSwgMSwgRGVmYXVsdExpbWl0cy5tYXhU
ZXh0dXJlRGltZW5zaW9uM0RdLAotICAgICAgICAgIFtibG9ja1dpZHRoLCAxLCBEZWZhdWx0TGlt
aXRzLm1heFRleHR1cmVEaW1lbnNpb24zRF0sCi0gICAgICAgICAgWzEsIGJsb2NrSGVpZ2h0LCBE
ZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRF0sCi0gICAgICAgICAgW2Jsb2NrV2lk
dGgsIGJsb2NrSGVpZ2h0LCBEZWZhdWx0TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRF0sCi0g
ICAgICAgICAgWzEsIDEsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEICsgMV0s
Ci0gICAgICAgICAgW2Jsb2NrV2lkdGgsIDEsIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVu
c2lvbjNEICsgMV0sCi0gICAgICAgICAgWzEsIGJsb2NrSGVpZ2h0LCBEZWZhdWx0TGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24zRCArIDFdLAotICAgICAgICAgIFtibG9ja1dpZHRoLCBibG9ja0hl
aWdodCwgRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QgKyAxXSwKKyAgICAgICAg
ICBbMSwgMSwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdCAtIDFdLAor
ICAgICAgICAgIFtibG9ja1dpZHRoLCAxLCBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24z
RC5kZWZhdWx0IC0gMV0sCisgICAgICAgICAgWzEsIGJsb2NrSGVpZ2h0LCBrTGltaXRJbmZvLm1h
eFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0IC0gMV0sCisgICAgICAgICAgW2Jsb2NrV2lkdGgs
IGJsb2NrSGVpZ2h0LCBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0IC0g
MV0sCisgICAgICAgICAgWzEsIDEsIGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRl
ZmF1bHRdLAorICAgICAgICAgIFtibG9ja1dpZHRoLCAxLCBrTGltaXRJbmZvLm1heFRleHR1cmVE
aW1lbnNpb24zRC5kZWZhdWx0XSwKKyAgICAgICAgICBbMSwgYmxvY2tIZWlnaHQsIGtMaW1pdElu
Zm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1bHRdLAorICAgICAgICAgIFtibG9ja1dpZHRo
LCBibG9ja0hlaWdodCwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdF0s
CisgICAgICAgICAgWzEsIDEsIGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1
bHQgKyAxXSwKKyAgICAgICAgICBbYmxvY2tXaWR0aCwgMSwga0xpbWl0SW5mby5tYXhUZXh0dXJl
RGltZW5zaW9uM0QuZGVmYXVsdCArIDFdLAorICAgICAgICAgIFsxLCBibG9ja0hlaWdodCwga0xp
bWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdCArIDFdLAorICAgICAgICAgIFti
bG9ja1dpZHRoLCBibG9ja0hlaWdodCwga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0Qu
ZGVmYXVsdCArIDFdLAogICAgICAgICBdOwogICAgICAgfSkKICAgKQpAQCAtNjMxLDggKzYzNCw4
IEBAIGcudGVzdCgndGV4dHVyZV9zaXplLDNkX3RleHR1cmUsY29tcHJlc3NlZF9mb3JtYXQnKQog
ICAgIGF3YWl0IHQuc2VsZWN0RGV2aWNlT3JTa2lwVGVzdENhc2UoaW5mby5mZWF0dXJlKTsKIAog
ICAgIGFzc2VydCgKLSAgICAgIERlZmF1bHRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNEICUg
aW5mby5ibG9ja1dpZHRoID09PSAwICYmCi0gICAgICAgIERlZmF1bHRMaW1pdHMubWF4VGV4dHVy
ZURpbWVuc2lvbjNEICUgaW5mby5ibG9ja0hlaWdodCA9PT0gMAorICAgICAga0xpbWl0SW5mby5t
YXhUZXh0dXJlRGltZW5zaW9uM0QuZGVmYXVsdCAlIGluZm8uYmxvY2tXaWR0aCA9PT0gMCAmJgor
ICAgICAgICBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNpb24zRC5kZWZhdWx0ICUgaW5mby5i
bG9ja0hlaWdodCA9PT0gMAogICAgICk7CiAKICAgICBjb25zdCBkZXNjcmlwdG9yID0gewpAQCAt
NjQ1LDkgKzY0OCw5IEBAIGcudGVzdCgndGV4dHVyZV9zaXplLDNkX3RleHR1cmUsY29tcHJlc3Nl
ZF9mb3JtYXQnKQogICAgIGNvbnN0IHN1Y2Nlc3MgPQogICAgICAgc2l6ZVswXSAlIGluZm8uYmxv
Y2tXaWR0aCA9PT0gMCAmJgogICAgICAgc2l6ZVsxXSAlIGluZm8uYmxvY2tIZWlnaHQgPT09IDAg
JiYKLSAgICAgIHNpemVbMF0gPD0gRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0Qg
JiYKLSAgICAgIHNpemVbMV0gPD0gRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0Qg
JiYKLSAgICAgIHNpemVbMl0gPD0gRGVmYXVsdExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0Q7
CisgICAgICBzaXplWzBdIDw9IGtMaW1pdEluZm8ubWF4VGV4dHVyZURpbWVuc2lvbjNELmRlZmF1
bHQgJiYKKyAgICAgIHNpemVbMV0gPD0ga0xpbWl0SW5mby5tYXhUZXh0dXJlRGltZW5zaW9uM0Qu
ZGVmYXVsdCAmJgorICAgICAgc2l6ZVsyXSA8PSBrTGltaXRJbmZvLm1heFRleHR1cmVEaW1lbnNp
b24zRC5kZWZhdWx0OwogCiAgICAgdC5leHBlY3RWYWxpZGF0aW9uRXJyb3IoKCkgPT4gewogICAg
ICAgdC5kZXZpY2UuY3JlYXRlVGV4dHVyZShkZXNjcmlwdG9yKTsKQEAgLTY4NCwxMyArNjg3LDYz
IEBAIGcudGVzdCgndGV4dHVyZV91c2FnZScpCiAgICAgfTsKIAogICAgIGxldCBzdWNjZXNzID0g
dHJ1ZTsKKyAgICBjb25zdCBhcHBsaWVkRGltZW5zaW9uID0gZGltZW5zaW9uID8/ICcyZCc7CiAg
ICAgLy8gTm90ZSB0aGF0IHdlIHVuY29uZGl0aW9uYWxseSB0ZXN0IGNvcHkgdXNhZ2VzIGZvciBh
bGwgZm9ybWF0cy4gV2UgZG9uJ3QgY2hlY2sgY29weVNyYy9jb3B5RHN0IGluIGtUZXh0dXJlRm9y
bWF0SW5mbyBpbiBjYXBhYmlsaXR5X2luZm8uanMKICAgICAvLyBpZiAoIWluZm8uY29weVNyYyAm
JiAodXNhZ2UgJiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMpICE9PSAwKSBzdWNjZXNzID0gZmFs
c2U7CiAgICAgLy8gaWYgKCFpbmZvLmNvcHlEc3QgJiYgKHVzYWdlICYgR1BVVGV4dHVyZVVzYWdl
LkNPUFlfRFNUKSAhPT0gMCkgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmICghaW5mby5zdG9yYWdl
ICYmICh1c2FnZSAmIEdQVVRleHR1cmVVc2FnZS5TVE9SQUdFX0JJTkRJTkcpICE9PSAwKSBzdWNj
ZXNzID0gZmFsc2U7Ci0gICAgaWYgKCFpbmZvLnJlbmRlcmFibGUgJiYgKHVzYWdlICYgR1BVVGV4
dHVyZVVzYWdlLlJFTkRFUl9BVFRBQ0hNRU5UKSAhPT0gMCkgc3VjY2VzcyA9IGZhbHNlOworICAg
IGlmICgKKyAgICAgICghaW5mby5yZW5kZXJhYmxlIHx8IGFwcGxpZWREaW1lbnNpb24gIT09ICcy
ZCcpICYmCisgICAgICAodXNhZ2UgJiBHUFVUZXh0dXJlVXNhZ2UuUkVOREVSX0FUVEFDSE1FTlQp
ICE9PSAwCisgICAgKQorICAgICAgc3VjY2VzcyA9IGZhbHNlOwogCiAgICAgdC5leHBlY3RWYWxp
ZGF0aW9uRXJyb3IoKCkgPT4gewogICAgICAgdC5kZXZpY2UuY3JlYXRlVGV4dHVyZShkZXNjcmlw
dG9yKTsKICAgICB9LCAhc3VjY2Vzcyk7CiAgIH0pOworCitnLnRlc3QoJ3ZpZXdGb3JtYXRzJykK
KyAgLmRlc2MoCisgICAgYFRlc3QgY3JlYXRpbmcgYSB0ZXh0dXJlIHdpdGggdmlld0Zvcm1hdHMg
bGlzdCBmb3IgYWxsIHt0ZXh0dXJlIGZvcm1hdH14e3ZpZXcgZm9ybWF0fS4gT25seSBjb21wYXRp
YmxlIHZpZXcgZm9ybWF0cyBzaG91bGQgYmUgdmFsaWQuYAorICApCisgIC5wYXJhbXModSA9Pgor
ICAgIHUuY29tYmluZSgnZm9ybWF0Jywga1RleHR1cmVGb3JtYXRzKS5iZWdpblN1YmNhc2VzKCku
Y29tYmluZSgndmlld0Zvcm1hdCcsIGtUZXh0dXJlRm9ybWF0cykKKyAgKQorICAuZm4oYXN5bmMg
dCA9PiB7CisgICAgY29uc3QgeyBmb3JtYXQsIHZpZXdGb3JtYXQgfSA9IHQucGFyYW1zOworICAg
IGF3YWl0IHQuc2VsZWN0RGV2aWNlRm9yVGV4dHVyZUZvcm1hdE9yU2tpcFRlc3RDYXNlKFtmb3Jt
YXQsIHZpZXdGb3JtYXRdKTsKKyAgICBjb25zdCB7IGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0IH0g
PSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKworICAgIGNvbnN0IGNvbXBhdGlibGUgPSB2
aWV3Q29tcGF0aWJsZShmb3JtYXQsIHZpZXdGb3JtYXQpOworCisgICAgLy8gVGVzdCB0aGUgdmll
d0Zvcm1hdCBpbiB0aGUgbGlzdC4KKyAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7
CisgICAgICB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgICAgZm9ybWF0LAorICAgICAg
ICBzaXplOiBbYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHRdLAorICAgICAgICB1c2FnZTogR1BVVGV4
dHVyZVVzYWdlLlRFWFRVUkVfQklORElORywKKyAgICAgICAgdmlld0Zvcm1hdHM6IFt2aWV3Rm9y
bWF0XSwKKyAgICAgIH0pOworICAgIH0sICFjb21wYXRpYmxlKTsKKworICAgIC8vIFRlc3QgdGhl
IHZpZXdGb3JtYXQgYW5kIHRoZSB0ZXh0dXJlIGZvcm1hdCBpbiB0aGUgbGlzdC4KKyAgICB0LmV4
cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7CisgICAgICB0LmRldmljZS5jcmVhdGVUZXh0dXJl
KHsKKyAgICAgICAgZm9ybWF0LAorICAgICAgICBzaXplOiBbYmxvY2tXaWR0aCwgYmxvY2tIZWln
aHRdLAorICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlRFWFRVUkVfQklORElORywKKyAg
ICAgICAgdmlld0Zvcm1hdHM6IFt2aWV3Rm9ybWF0LCBmb3JtYXRdLAorICAgICAgfSk7CisgICAg
fSwgIWNvbXBhdGlibGUpOworCisgICAgLy8gVGVzdCB0aGUgdmlld0Zvcm1hdCBtdWx0aXBsZSB0
aW1lcyBpbiB0aGUgbGlzdC4KKyAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7Cisg
ICAgICB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgICAgZm9ybWF0LAorICAgICAgICBz
aXplOiBbYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHRdLAorICAgICAgICB1c2FnZTogR1BVVGV4dHVy
ZVVzYWdlLlRFWFRVUkVfQklORElORywKKyAgICAgICAgdmlld0Zvcm1hdHM6IFt2aWV3Rm9ybWF0
LCB2aWV3Rm9ybWF0XSwKKyAgICAgIH0pOworICAgIH0sICFjb21wYXRpYmxlKTsKKyAgfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlk
YXRpb24vY3JlYXRlVmlldy5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZVZpZXcuc3BlYy5qcwppbmRleCBkZWZhZTI2Y2U4
ZGIuLmU5NTk2NTViOTk4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZVZpZXcuc3BlYy5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vY3JlYXRlVmlldy5z
cGVjLmpzCkBAIC0xMCw2ICsxMCw3IEBAIGltcG9ydCB7CiAgIGtUZXh0dXJlRm9ybWF0SW5mbywK
ICAga1RleHR1cmVGb3JtYXRzLAogICBrVGV4dHVyZVZpZXdEaW1lbnNpb25zLAorICB2aWV3Q29t
cGF0aWJsZSwKIH0gZnJvbSAnLi4vLi4vY2FwYWJpbGl0eV9pbmZvLmpzJzsKIGltcG9ydCB7IGtS
ZXNvdXJjZVN0YXRlcyB9IGZyb20gJy4uLy4uL2dwdV90ZXN0LmpzJzsKIGltcG9ydCB7CkBAIC0y
NywyNyArMjgsMzcgQEAgY29uc3Qga0xldmVscyA9IDY7CiAKIGcudGVzdCgnZm9ybWF0JykKICAg
LmRlc2MoCi0gICAgYFZpZXdzIG11c3QgaGF2ZSB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIGJhc2Ug
dGV4dHVyZSwgZm9yIGFsbCB7dGV4dHVyZSBmb3JtYXR9eHt2aWV3IGZvcm1hdH0uYAorICAgIGBW
aWV3cyBtdXN0IGhhdmUgdGhlIHZpZXcgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCB0aGUgYmFzZSB0
ZXh0dXJlLCBmb3IgYWxsIHt0ZXh0dXJlIGZvcm1hdH14e3ZpZXcgZm9ybWF0fS5gCiAgICkKICAg
LnBhcmFtcyh1ID0+CiAgICAgdQogICAgICAgLmNvbWJpbmUoJ3RleHR1cmVGb3JtYXQnLCBrVGV4
dHVyZUZvcm1hdHMpCiAgICAgICAuYmVnaW5TdWJjYXNlcygpCi0gICAgICAvLyBJZiB1bmRlZmlu
ZWQsIHNob3VsZCBkZWZhdWx0IHRvIHRleHR1cmVGb3JtYXQuCiAgICAgICAuY29tYmluZSgndmll
d0Zvcm1hdCcsIFt1bmRlZmluZWQsIC4uLmtUZXh0dXJlRm9ybWF0c10pCisgICAgICAuY29tYmlu
ZSgndXNlVmlld0Zvcm1hdExpc3QnLCBbZmFsc2UsIHRydWVdKQogICApCiAgIC5mbihhc3luYyB0
ID0+IHsKLSAgICBjb25zdCB7IHRleHR1cmVGb3JtYXQsIHZpZXdGb3JtYXQgfSA9IHQucGFyYW1z
OworICAgIGNvbnN0IHsgdGV4dHVyZUZvcm1hdCwgdmlld0Zvcm1hdCwgdXNlVmlld0Zvcm1hdExp
c3QgfSA9IHQucGFyYW1zOwogICAgIGF3YWl0IHQuc2VsZWN0RGV2aWNlRm9yVGV4dHVyZUZvcm1h
dE9yU2tpcFRlc3RDYXNlKFt0ZXh0dXJlRm9ybWF0LCB2aWV3Rm9ybWF0XSk7CiAgICAgY29uc3Qg
eyBibG9ja1dpZHRoLCBibG9ja0hlaWdodCB9ID0ga1RleHR1cmVGb3JtYXRJbmZvW3RleHR1cmVG
b3JtYXRdOwogCisgICAgY29uc3QgY29tcGF0aWJsZSA9IHZpZXdGb3JtYXQgPT09IHVuZGVmaW5l
ZCB8fCB2aWV3Q29tcGF0aWJsZSh0ZXh0dXJlRm9ybWF0LCB2aWV3Rm9ybWF0KTsKKwogICAgIGNv
bnN0IHRleHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKICAgICAgIGZvcm1hdDogdGV4
dHVyZUZvcm1hdCwKICAgICAgIHNpemU6IFtibG9ja1dpZHRoLCBibG9ja0hlaWdodF0sCiAgICAg
ICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlRFWFRVUkVfQklORElORywKKworICAgICAgLy8gVGhp
cyBpcyBhIHRlc3Qgb2YgY3JlYXRlVmlldywgbm90IGNyZWF0ZVRleHR1cmUuIERvbid0IHBhc3Mg
dmlld0Zvcm1hdHMgaGVyZSB0aGF0CisgICAgICAvLyBhcmUgbm90IGNvbXBhdGlibGUsIGFzIHRo
YXQgaXMgdGVzdGVkIGluIGNyZWF0ZVRleHR1cmUuc3BlYy50cy4KKyAgICAgIHZpZXdGb3JtYXRz
OgorICAgICAgICB1c2VWaWV3Rm9ybWF0TGlzdCAmJiBjb21wYXRpYmxlICYmIHZpZXdGb3JtYXQg
IT09IHVuZGVmaW5lZCA/IFt2aWV3Rm9ybWF0XSA6IHVuZGVmaW5lZCwKICAgICB9KTsKIAotICAg
IGNvbnN0IHN1Y2Nlc3MgPSB2aWV3Rm9ybWF0ID09PSB1bmRlZmluZWQgfHwgdmlld0Zvcm1hdCA9
PT0gdGV4dHVyZUZvcm1hdDsKKyAgICAvLyBTdWNjZXNzZnVsIGlmIHRoZXJlIGlzIG5vIHZpZXcg
Zm9ybWF0LCBubyByZWludGVycHJldGF0aW9uIHdhcyByZXF1aXJlZCwgb3IgdGhlIGZvcm1hdHMg
YXJlIGNvbXBhdGlibGUKKyAgICAvLyBhbmQgaXMgd2FzIHNwZWNpZmllZCBpbiB0aGUgdmlld0Zv
cm1hdHMgbGlzdC4KKyAgICBjb25zdCBzdWNjZXNzID0KKyAgICAgIHZpZXdGb3JtYXQgPT09IHVu
ZGVmaW5lZCB8fCB2aWV3Rm9ybWF0ID09PSB0ZXh0dXJlRm9ybWF0IHx8IChjb21wYXRpYmxlICYm
IHVzZVZpZXdGb3JtYXRMaXN0KTsKICAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7
CiAgICAgICB0ZXh0dXJlLmNyZWF0ZVZpZXcoeyBmb3JtYXQ6IHZpZXdGb3JtYXQgfSk7CiAgICAg
fSwgIXN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2JlZ2luUmVuZGVyUGFzcy5zcGVjLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29k
aW5nL2JlZ2luUmVuZGVyUGFzcy5zcGVjLmpzCmluZGV4IDliMzQ3MjM1ZTJmNS4uMDQ5MDBiZDc3
MWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L3ZhbGlkYXRpb24vZW5jb2RpbmcvYmVnaW5SZW5kZXJQYXNzLnNwZWMuanMKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2Jl
Z2luUmVuZGVyUGFzcy5zcGVjLmpzCkBAIC0xNjUsMTQgKzE2NSwxNCBAQCBnLnRlc3QoJ29jY2x1
c2lvbl9xdWVyeV9zZXQsZGV2aWNlX21pc21hdGNoJykKICAgICAgIGF3YWl0IHQuc2VsZWN0TWlz
bWF0Y2hlZERldmljZU9yU2tpcFRlc3RDYXNlKHVuZGVmaW5lZCk7CiAgICAgfQogCi0gICAgY29u
c3QgZGVzY3JpcHRvciA9IHsKKyAgICBjb25zdCBkZXZpY2UgPSBtaXNtYXRjaGVkID8gdC5taXNt
YXRjaGVkRGV2aWNlIDogdC5kZXZpY2U7CisKKyAgICBjb25zdCBvY2NsdXNpb25RdWVyeVNldCA9
IGRldmljZS5jcmVhdGVRdWVyeVNldCh7CiAgICAgICB0eXBlOiAnb2NjbHVzaW9uJywKICAgICAg
IGNvdW50OiAxLAotICAgIH07CisgICAgfSk7CiAKLSAgICBjb25zdCBvY2NsdXNpb25RdWVyeVNl
dCA9IG1pc21hdGNoZWQKLSAgICAgID8gdC5taXNtYXRjaGVkRGV2aWNlLmNyZWF0ZVF1ZXJ5U2V0
KGRlc2NyaXB0b3IpCi0gICAgICA6IHQuZGV2aWNlLmNyZWF0ZVF1ZXJ5U2V0KGRlc2NyaXB0b3Ip
OworICAgIHQudHJhY2tGb3JDbGVhbnVwKG9jY2x1c2lvblF1ZXJ5U2V0KTsKIAogICAgIGNvbnN0
IGVuY29kZXIgPSB0LmNyZWF0ZUVuY29kZXIoJ3JlbmRlciBwYXNzJywgeyBvY2NsdXNpb25RdWVy
eVNldCB9KTsKICAgICBlbmNvZGVyLnZhbGlkYXRlRmluaXNoKCFtaXNtYXRjaGVkKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlv
bi9lbmNvZGluZy9jbWRzL2J1ZmZlcl90ZXh0dXJlX2NvcGllcy5zcGVjLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMv
YnVmZmVyX3RleHR1cmVfY29waWVzLnNwZWMuanMKaW5kZXggODAzMjRlNWVmZjczLi5jNDJiNjVl
Y2VhZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL2J1ZmZlcl90ZXh0dXJlX2NvcGllcy5zcGVjLmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlv
bi9lbmNvZGluZy9jbWRzL2J1ZmZlcl90ZXh0dXJlX2NvcGllcy5zcGVjLmpzCkBAIC04NiwxNyAr
ODYsNyBAQCBnLnRlc3QoJ2RlcHRoX3N0ZW5jaWxfZm9ybWF0LGNvcHlfdXNhZ2VfYW5kX2FzcGVj
dCcpCiAgICAgewogICAgICAgY29uc3Qgc3VjY2VzcyA9IGRlcHRoU3RlbmNpbEJ1ZmZlclRleHR1
cmVDb3B5U3VwcG9ydGVkKCdXcml0ZVRleHR1cmUnLCBmb3JtYXQsIGFzcGVjdCk7CiAgICAgICBj
b25zdCB1cGxvYWREYXRhID0gbmV3IFVpbnQ4QXJyYXkodXBsb2FkQnVmZmVyU2l6ZSk7Ci0gICAg
ICB0LnRlc3RXcml0ZVRleHR1cmUoCi0gICAgICAgIHsgdGV4dHVyZSwgYXNwZWN0IH0sCi0gICAg
ICAgIHVwbG9hZERhdGEsCi0gICAgICAgIHsKLSAgICAgICAgICBieXRlc1BlclJvdzogdGV4dHVy
ZVNpemUud2lkdGgsCi0gICAgICAgICAgcm93c1BlckltYWdlOiB0ZXh0dXJlU2l6ZS5oZWlnaHQs
Ci0gICAgICAgIH0sCi0KLSAgICAgICAgdGV4dHVyZVNpemUsCi0gICAgICAgIHN1Y2Nlc3MKLSAg
ICAgICk7CisgICAgICB0LnRlc3RXcml0ZVRleHR1cmUoeyB0ZXh0dXJlLCBhc3BlY3QgfSwgdXBs
b2FkRGF0YSwge30sIHRleHR1cmVTaXplLCBzdWNjZXNzKTsKICAgICB9CiAgIH0pOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRp
b24vZW5jb2RpbmcvY21kcy9jbGVhckJ1ZmZlci5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvY2xlYXJCdWZm
ZXIuc3BlYy5qcwppbmRleCBjZWU3MTBlODRlNGIuLmRkMzE0ZDQxYWVkNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29k
aW5nL2NtZHMvY2xlYXJCdWZmZXIuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9jbGVhckJ1ZmZlci5z
cGVjLmpzCkBAIC01LDYgKzUsNyBAQCBBUEkgdmFsaWRhdGlvbiB0ZXN0cyBmb3IgY2xlYXJCdWZm
ZXIuCiBgOwogaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Nv
bW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7CiBpbXBvcnQgeyBrQnVmZmVyVXNhZ2VzIH0g
ZnJvbSAnLi4vLi4vLi4vLi4vY2FwYWJpbGl0eV9pbmZvLmpzJzsKK2ltcG9ydCB7IGtSZXNvdXJj
ZVN0YXRlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2dwdV90ZXN0LmpzJzsKIGltcG9ydCB7IGtNYXhT
YWZlTXVsdGlwbGVPZjggfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL21hdGguanMnOwogaW1wb3J0
IHsgVmFsaWRhdGlvblRlc3QgfSBmcm9tICcuLi8uLi92YWxpZGF0aW9uX3Rlc3QuanMnOwogCkBA
IC0yMywxNiArMjQsNTcgQEAgY2xhc3MgRiBleHRlbmRzIFZhbGlkYXRpb25UZXN0IHsKIAogZXhw
b3J0IGNvbnN0IGcgPSBtYWtlVGVzdEdyb3VwKEYpOwogCi1nLnRlc3QoJ2ludmFsaWRfYnVmZmVy
JykKLSAgLmRlc2MoYFRlc3QgdGhhdCBjbGVhcmluZyBhbiBlcnJvciBidWZmZXIgZmFpbHMuYCkK
K2cudGVzdCgnYnVmZmVyX3N0YXRlJykKKyAgLmRlc2MoYFRlc3QgdGhhdCBjbGVhcmluZyBhbiBp
bnZhbGlkIG9yIGRlc3Ryb3llZCBidWZmZXIgZmFpbHMuYCkKKyAgLnBhcmFtcyh1ID0+IHUuY29t
YmluZSgnYnVmZmVyU3RhdGUnLCBrUmVzb3VyY2VTdGF0ZXMpKQogICAuZm4oYXN5bmMgdCA9PiB7
Ci0gICAgY29uc3QgZXJyb3JCdWZmZXIgPSB0LmdldEVycm9yQnVmZmVyKCk7CisgICAgY29uc3Qg
eyBidWZmZXJTdGF0ZSB9ID0gdC5wYXJhbXM7CisKKyAgICBjb25zdCBidWZmZXIgPSB0LmNyZWF0
ZUJ1ZmZlcldpdGhTdGF0ZShidWZmZXJTdGF0ZSwgeworICAgICAgc2l6ZTogOCwKKyAgICAgIHVz
YWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCwKKyAgICB9KTsKKworICAgIGNvbnN0IGNvbW1h
bmRFbmNvZGVyID0gdC5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBjb21tYW5k
RW5jb2Rlci5jbGVhckJ1ZmZlcihidWZmZXIsIDAsIDgpOworCisgICAgaWYgKGJ1ZmZlclN0YXRl
ID09PSAnaW52YWxpZCcpIHsKKyAgICAgIHQuZXhwZWN0VmFsaWRhdGlvbkVycm9yKCgpID0+IHsK
KyAgICAgICAgY29tbWFuZEVuY29kZXIuZmluaXNoKCk7CisgICAgICB9KTsKKyAgICB9IGVsc2Ug
eworICAgICAgY29uc3QgY21kID0gY29tbWFuZEVuY29kZXIuZmluaXNoKCk7CisgICAgICB0LmV4
cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7CisgICAgICAgIHQuZGV2aWNlLnF1ZXVlLnN1Ym1p
dChbY21kXSk7CisgICAgICB9LCBidWZmZXJTdGF0ZSA9PT0gJ2Rlc3Ryb3llZCcpOworICAgIH0K
KyAgfSk7CisKK2cudGVzdCgnYnVmZmVyLGRldmljZV9taXNtYXRjaCcpCisgIC5kZXNjKGBUZXN0
cyBjbGVhckJ1ZmZlciBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYnVmZmVyIGNyZWF0ZWQgZnJvbSBh
bm90aGVyIGRldmljZS5gKQorICAucGFyYW1zU3ViY2FzZXNPbmx5KHUgPT4gdS5jb21iaW5lKCdt
aXNtYXRjaGVkJywgW3RydWUsIGZhbHNlXSkpCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25z
dCB7IG1pc21hdGNoZWQgfSA9IHQucGFyYW1zOworCisgICAgaWYgKG1pc21hdGNoZWQpIHsKKyAg
ICAgIGF3YWl0IHQuc2VsZWN0TWlzbWF0Y2hlZERldmljZU9yU2tpcFRlc3RDYXNlKHVuZGVmaW5l
ZCk7CisgICAgfQorCisgICAgY29uc3QgZGV2aWNlID0gbWlzbWF0Y2hlZCA/IHQubWlzbWF0Y2hl
ZERldmljZSA6IHQuZGV2aWNlOworICAgIGNvbnN0IHNpemUgPSA4OworCisgICAgY29uc3QgYnVm
ZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7CisgICAgICBzaXplLAorICAgICAgdXNhZ2U6IEdQ
VUJ1ZmZlclVzYWdlLkNPUFlfRFNULAorICAgIH0pOworCisgICAgdC50cmFja0ZvckNsZWFudXAo
YnVmZmVyKTsKIAogICAgIHQuVGVzdENsZWFyQnVmZmVyKHsKLSAgICAgIGJ1ZmZlcjogZXJyb3JC
dWZmZXIsCisgICAgICBidWZmZXIsCiAgICAgICBvZmZzZXQ6IDAsCi0gICAgICBzaXplOiA4LAot
ICAgICAgaXNTdWNjZXNzOiBmYWxzZSwKKyAgICAgIHNpemUsCisgICAgICBpc1N1Y2Nlc3M6ICFt
aXNtYXRjaGVkLAogICAgIH0pOwogICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvY29tcHV0
ZV9wYXNzLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9jb21wdXRlX3Bhc3Muc3BlYy5qcwppbmRleCBiZWQ5
OWYyZTljNzIuLjAwNWNlNjkwMmM0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvY29tcHV0ZV9wYXNz
LnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92
YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvY29tcHV0ZV9wYXNzLnNwZWMuanMKQEAgLTYsNyArNiw3
IEBAIEFQSSB2YWxpZGF0aW9uIHRlc3QgZm9yIGNvbXB1dGUgcGFzcwogRG9lcyAqKm5vdCoqIHRl
c3QgdXNhZ2Ugc2NvcGVzIChyZXNvdXJjZV91c2FnZXMvKSBvciBwcm9ncmFtbWFibGUgcGFzcyBz
dHVmZiAocHJvZ3JhbW1hYmxlX3Bhc3MpLgogYDsKIGltcG9ydCB7IG1ha2VUZXN0R3JvdXAgfSBm
cm9tICcuLi8uLi8uLi8uLi8uLi9jb21tb24vZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnOwotaW1w
b3J0IHsgRGVmYXVsdExpbWl0cyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy5qcyc7Citp
bXBvcnQgeyBrTGltaXRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vLi4vY2FwYWJpbGl0eV9pbmZvLmpz
JzsKIGltcG9ydCB7IGtSZXNvdXJjZVN0YXRlcyB9IGZyb20gJy4uLy4uLy4uLy4uL2dwdV90ZXN0
LmpzJzsKIGltcG9ydCB7IFZhbGlkYXRpb25UZXN0IH0gZnJvbSAnLi4vLi4vdmFsaWRhdGlvbl90
ZXN0LmpzJzsKIApAQCAtNjYsOSArNjYsMzEgQEAgc2V0UGlwZWxpbmUgc2hvdWxkIGdlbmVyYXRl
IGFuIGVycm9yIGlmZiB1c2luZyBhbiAnaW52YWxpZCcgcGlwZWxpbmUuCiBnLnRlc3QoJ3BpcGVs
aW5lLGRldmljZV9taXNtYXRjaCcpCiAgIC5kZXNjKCdUZXN0cyBzZXRQaXBlbGluZSBjYW5ub3Qg
YmUgY2FsbGVkIHdpdGggYSBjb21wdXRlIHBpcGVsaW5lIGNyZWF0ZWQgZnJvbSBhbm90aGVyIGRl
dmljZScpCiAgIC5wYXJhbXNTdWJjYXNlc09ubHkodSA9PiB1LmNvbWJpbmUoJ21pc21hdGNoZWQn
LCBbdHJ1ZSwgZmFsc2VdKSkKLSAgLnVuaW1wbGVtZW50ZWQoKTsKKyAgLmZuKGFzeW5jIHQgPT4g
eworICAgIGNvbnN0IHsgbWlzbWF0Y2hlZCB9ID0gdC5wYXJhbXM7CiAKLWNvbnN0IGtNYXhEaXNw
YXRjaCA9IERlZmF1bHRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb247Cisg
ICAgaWYgKG1pc21hdGNoZWQpIHsKKyAgICAgIGF3YWl0IHQuc2VsZWN0TWlzbWF0Y2hlZERldmlj
ZU9yU2tpcFRlc3RDYXNlKHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgY29uc3QgZGV2aWNlID0g
bWlzbWF0Y2hlZCA/IHQubWlzbWF0Y2hlZERldmljZSA6IHQuZGV2aWNlOworCisgICAgY29uc3Qg
cGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKKyAgICAgIGNvbXB1dGU6
IHsKKyAgICAgICAgbW9kdWxlOiBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKKyAgICAgICAg
ICBjb2RlOiAnQHN0YWdlKGNvbXB1dGUpIEB3b3JrZ3JvdXBfc2l6ZSgxKSBmbiBtYWluKCkge30n
LAorICAgICAgICB9KSwKKworICAgICAgICBlbnRyeVBvaW50OiAnbWFpbicsCisgICAgICB9LAor
ICAgIH0pOworCisgICAgY29uc3QgeyBlbmNvZGVyLCB2YWxpZGF0ZUZpbmlzaCB9ID0gdC5jcmVh
dGVFbmNvZGVyKCdjb21wdXRlIHBhc3MnKTsKKyAgICBlbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVs
aW5lKTsKKyAgICB2YWxpZGF0ZUZpbmlzaCghbWlzbWF0Y2hlZCk7CisgIH0pOworCitjb25zdCBr
TWF4RGlzcGF0Y2ggPSBrTGltaXRJbmZvLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9u
LmRlZmF1bHQ7CiBnLnRlc3QoJ2Rpc3BhdGNoX3NpemVzJykKICAgLmRlc2MoCiAgICAgYFRlc3Qg
J2RpcmVjdCcgYW5kICdpbmRpcmVjdCcgZGlzcGF0Y2ggd2l0aCB2YXJpb3VzIHNpemVzLgpAQCAt
MTE0LDcgKzEzNiw3IEBAIGcudGVzdCgnZGlzcGF0Y2hfc2l6ZXMnKQogICB9KTsKIAogY29uc3Qg
a0J1ZmZlckRhdGEgPSBuZXcgVWludDMyQXJyYXkoNikuZmlsbCgxKTsKLWcudGVzdCgnaW5kaXJl
Y3RfZGlzcGF0Y2hfYnVmZmVyJykKK2cudGVzdCgnaW5kaXJlY3RfZGlzcGF0Y2hfYnVmZmVyX3N0
YXRlJykKICAgLmRlc2MoCiAgICAgYAogVGVzdCBkaXNwYXRjaEluZGlyZWN0IHZhbGlkYXRpb24g
Ynkgc3VibWl0dGluZyB2YXJpb3VzIGRpc3BhdGNoZXMgd2l0aCBhIG5vLW9wIHBpcGVsaW5lIGFu
ZCBhbgpAQCAtMTYxLDQgKzE4MywyNiBAQCBnLnRlc3QoJ2luZGlyZWN0X2Rpc3BhdGNoX2J1ZmZl
cixkZXZpY2VfbWlzbWF0Y2gnKQogICAgICdUZXN0cyBkaXNwYXRjaEluZGlyZWN0IGNhbm5vdCBi
ZSBjYWxsZWQgd2l0aCBhbiBpbmRpcmVjdCBidWZmZXIgY3JlYXRlZCBmcm9tIGFub3RoZXIgZGV2
aWNlJwogICApCiAgIC5wYXJhbXNTdWJjYXNlc09ubHkodSA9PiB1LmNvbWJpbmUoJ21pc21hdGNo
ZWQnLCBbdHJ1ZSwgZmFsc2VdKSkKLSAgLnVuaW1wbGVtZW50ZWQoKTsKKyAgLmZuKGFzeW5jIHQg
PT4geworICAgIGNvbnN0IHsgbWlzbWF0Y2hlZCB9ID0gdC5wYXJhbXM7CisKKyAgICBpZiAobWlz
bWF0Y2hlZCkgeworICAgICAgYXdhaXQgdC5zZWxlY3RNaXNtYXRjaGVkRGV2aWNlT3JTa2lwVGVz
dENhc2UodW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBjb25zdCBwaXBlbGluZSA9IHQuY3JlYXRl
Tm9PcENvbXB1dGVQaXBlbGluZSgpOworCisgICAgY29uc3QgZGV2aWNlID0gbWlzbWF0Y2hlZCA/
IHQubWlzbWF0Y2hlZERldmljZSA6IHQuZGV2aWNlOworCisgICAgY29uc3QgYnVmZmVyID0gZGV2
aWNlLmNyZWF0ZUJ1ZmZlcih7CisgICAgICBzaXplOiAxNiwKKyAgICAgIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5JTkRJUkVDVCwKKyAgICB9KTsKKworICAgIHQudHJhY2tGb3JDbGVhbnVwKGJ1ZmZl
cik7CisKKyAgICBjb25zdCB7IGVuY29kZXIsIHZhbGlkYXRlRmluaXNoIH0gPSB0LmNyZWF0ZUVu
Y29kZXIoJ2NvbXB1dGUgcGFzcycpOworICAgIGVuY29kZXIuc2V0UGlwZWxpbmUocGlwZWxpbmUp
OworICAgIGVuY29kZXIuZGlzcGF0Y2hJbmRpcmVjdChidWZmZXIsIDApOworICAgIHZhbGlkYXRl
RmluaXNoKCFtaXNtYXRjaGVkKTsKKyAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9jb3B5QnVm
ZmVyVG9CdWZmZXIuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL2NvcHlCdWZmZXJUb0J1ZmZlci5zcGVjLmpz
CmluZGV4IDBmNmM3MWU1YjNiMy4uNTJkOWU2NjA4NTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9j
b3B5QnVmZmVyVG9CdWZmZXIuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9jb3B5QnVmZmVyVG9CdWZm
ZXIuc3BlYy5qcwpAQCAtMjYsNTAgKzI2LDY3IEBAIFRlc3QgUGxhbjoKIGA7CiBpbXBvcnQgeyBt
YWtlVGVzdEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay90ZXN0
X2dyb3VwLmpzJzsKIGltcG9ydCB7IGtCdWZmZXJVc2FnZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9j
YXBhYmlsaXR5X2luZm8uanMnOworaW1wb3J0IHsga1Jlc291cmNlU3RhdGVzIH0gZnJvbSAnLi4v
Li4vLi4vLi4vZ3B1X3Rlc3QuanMnOwogaW1wb3J0IHsga01heFNhZmVNdWx0aXBsZU9mOCB9IGZy
b20gJy4uLy4uLy4uLy4uL3V0aWwvbWF0aC5qcyc7CiBpbXBvcnQgeyBWYWxpZGF0aW9uVGVzdCB9
IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25fdGVzdC5qcyc7CiAKIGNsYXNzIEYgZXh0ZW5kcyBWYWxp
ZGF0aW9uVGVzdCB7CiAgIFRlc3RDb3B5QnVmZmVyVG9CdWZmZXIob3B0aW9ucykgewotICAgIGNv
bnN0IHsgc3JjQnVmZmVyLCBzcmNPZmZzZXQsIGRzdEJ1ZmZlciwgZHN0T2Zmc2V0LCBjb3B5U2l6
ZSwgaXNTdWNjZXNzIH0gPSBvcHRpb25zOworICAgIGNvbnN0IHsgc3JjQnVmZmVyLCBzcmNPZmZz
ZXQsIGRzdEJ1ZmZlciwgZHN0T2Zmc2V0LCBjb3B5U2l6ZSwgZXhwZWN0YXRpb24gfSA9IG9wdGlv
bnM7CiAKICAgICBjb25zdCBjb21tYW5kRW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7CiAgICAgY29tbWFuZEVuY29kZXIuY29weUJ1ZmZlclRvQnVmZmVyKHNyY0J1
ZmZlciwgc3JjT2Zmc2V0LCBkc3RCdWZmZXIsIGRzdE9mZnNldCwgY29weVNpemUpOwogCi0gICAg
dGhpcy5leHBlY3RWYWxpZGF0aW9uRXJyb3IoKCkgPT4gewotICAgICAgY29tbWFuZEVuY29kZXIu
ZmluaXNoKCk7Ci0gICAgfSwgIWlzU3VjY2Vzcyk7CisgICAgaWYgKGV4cGVjdGF0aW9uID09PSAn
RmluaXNoRXJyb3InKSB7CisgICAgICB0aGlzLmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7
CisgICAgICAgIGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOworICAgICAgfSk7CisgICAgfSBlbHNl
IHsKKyAgICAgIGNvbnN0IGNtZCA9IGNvbW1hbmRFbmNvZGVyLmZpbmlzaCgpOworICAgICAgdGhp
cy5leHBlY3RWYWxpZGF0aW9uRXJyb3IoKCkgPT4geworICAgICAgICB0aGlzLmRldmljZS5xdWV1
ZS5zdWJtaXQoW2NtZF0pOworICAgICAgfSwgZXhwZWN0YXRpb24gPT09ICdTdWJtaXRFcnJvcicp
OworICAgIH0KICAgfQogfQogCiBleHBvcnQgY29uc3QgZyA9IG1ha2VUZXN0R3JvdXAoRik7CiAK
LWcudGVzdCgnY29weV93aXRoX2ludmFsaWRfYnVmZmVyJykuZm4oYXN5bmMgdCA9PiB7Ci0gIGNv
bnN0IHZhbGlkQnVmZmVyID0gdC5kZXZpY2UuY3JlYXRlQnVmZmVyKHsKLSAgICBzaXplOiAxNiwK
LSAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5DT1BZ
X0RTVCwKLSAgfSk7CitnLnRlc3QoJ2J1ZmZlcl9zdGF0ZScpCisgIC5wYXJhbXModSA9PgorICAg
IHUgLy8KKyAgICAgIC5jb21iaW5lKCdzcmNCdWZmZXJTdGF0ZScsIGtSZXNvdXJjZVN0YXRlcykK
KyAgICAgIC5jb21iaW5lKCdkc3RCdWZmZXJTdGF0ZScsIGtSZXNvdXJjZVN0YXRlcykKKyAgKQor
ICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyBzcmNCdWZmZXJTdGF0ZSwgZHN0QnVmZmVy
U3RhdGUgfSA9IHQucGFyYW1zOworICAgIGNvbnN0IHNyY0J1ZmZlciA9IHQuY3JlYXRlQnVmZmVy
V2l0aFN0YXRlKHNyY0J1ZmZlclN0YXRlLCB7CisgICAgICBzaXplOiAxNiwKKyAgICAgIHVzYWdl
OiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNULAorICAg
IH0pOwogCi0gIGNvbnN0IGVycm9yQnVmZmVyID0gdC5nZXRFcnJvckJ1ZmZlcigpOworICAgIGNv
bnN0IGRzdEJ1ZmZlciA9IHQuY3JlYXRlQnVmZmVyV2l0aFN0YXRlKGRzdEJ1ZmZlclN0YXRlLCB7
CisgICAgICBzaXplOiAxNiwKKyAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8
IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNULAorICAgIH0pOwogCi0gIHQuVGVzdENvcHlCdWZmZXJU
b0J1ZmZlcih7Ci0gICAgc3JjQnVmZmVyOiBlcnJvckJ1ZmZlciwKLSAgICBzcmNPZmZzZXQ6IDAs
Ci0gICAgZHN0QnVmZmVyOiB2YWxpZEJ1ZmZlciwKLSAgICBkc3RPZmZzZXQ6IDAsCi0gICAgY29w
eVNpemU6IDgsCi0gICAgaXNTdWNjZXNzOiBmYWxzZSwKLSAgfSk7CisgICAgY29uc3Qgc2hvdWxk
RmluaXNoRXJyb3IgPSBzcmNCdWZmZXJTdGF0ZSA9PT0gJ2ludmFsaWQnIHx8IGRzdEJ1ZmZlclN0
YXRlID09PSAnaW52YWxpZCc7CisgICAgY29uc3Qgc2hvdWxkU3VibWl0U3VjY2VzcyA9IHNyY0J1
ZmZlclN0YXRlID09PSAndmFsaWQnICYmIGRzdEJ1ZmZlclN0YXRlID09PSAndmFsaWQnOworICAg
IGNvbnN0IGV4cGVjdGF0aW9uID0gc2hvdWxkU3VibWl0U3VjY2VzcworICAgICAgPyAnU3VjY2Vz
cycKKyAgICAgIDogc2hvdWxkRmluaXNoRXJyb3IKKyAgICAgID8gJ0ZpbmlzaEVycm9yJworICAg
ICAgOiAnU3VibWl0RXJyb3InOwogCi0gIHQuVGVzdENvcHlCdWZmZXJUb0J1ZmZlcih7Ci0gICAg
c3JjQnVmZmVyOiB2YWxpZEJ1ZmZlciwKLSAgICBzcmNPZmZzZXQ6IDAsCi0gICAgZHN0QnVmZmVy
OiBlcnJvckJ1ZmZlciwKLSAgICBkc3RPZmZzZXQ6IDAsCi0gICAgY29weVNpemU6IDgsCi0gICAg
aXNTdWNjZXNzOiBmYWxzZSwKKyAgICB0LlRlc3RDb3B5QnVmZmVyVG9CdWZmZXIoeworICAgICAg
c3JjQnVmZmVyLAorICAgICAgc3JjT2Zmc2V0OiAwLAorICAgICAgZHN0QnVmZmVyLAorICAgICAg
ZHN0T2Zmc2V0OiAwLAorICAgICAgY29weVNpemU6IDgsCisgICAgICBleHBlY3RhdGlvbiwKKyAg
ICB9KTsKICAgfSk7Ci19KTsKIAogZy50ZXN0KCdidWZmZXIsZGV2aWNlX21pc21hdGNoJykKICAg
LmRlc2MoCkBAIC04MCw3ICs5NywzOSBAQCBnLnRlc3QoJ2J1ZmZlcixkZXZpY2VfbWlzbWF0Y2gn
KQogICAgIHsgc3JjTWlzbWF0Y2hlZDogdHJ1ZSwgZHN0TWlzbWF0Y2hlZDogZmFsc2UgfSwKICAg
ICB7IHNyY01pc21hdGNoZWQ6IGZhbHNlLCBkc3RNaXNtYXRjaGVkOiB0cnVlIH0sCiAgIF0pCi0g
IC51bmltcGxlbWVudGVkKCk7CisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IHNyY01p
c21hdGNoZWQsIGRzdE1pc21hdGNoZWQgfSA9IHQucGFyYW1zOworICAgIGNvbnN0IG1pc21hdGNo
ZWQgPSBzcmNNaXNtYXRjaGVkIHx8IGRzdE1pc21hdGNoZWQ7CisKKyAgICBpZiAobWlzbWF0Y2hl
ZCkgeworICAgICAgYXdhaXQgdC5zZWxlY3RNaXNtYXRjaGVkRGV2aWNlT3JTa2lwVGVzdENhc2Uo
dW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBjb25zdCBkZXZpY2UgPSBtaXNtYXRjaGVkID8gdC5t
aXNtYXRjaGVkRGV2aWNlIDogdC5kZXZpY2U7CisKKyAgICBjb25zdCBzcmNCdWZmZXIgPSBkZXZp
Y2UuY3JlYXRlQnVmZmVyKHsKKyAgICAgIHNpemU6IDE2LAorICAgICAgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLkNPUFlfU1JDLAorICAgIH0pOworCisgICAgdC50cmFja0ZvckNsZWFudXAoc3JjQnVm
ZmVyKTsKKworICAgIGNvbnN0IGRzdEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeworICAg
ICAgc2l6ZTogMTYsCisgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QsCisgICAg
fSk7CisKKyAgICB0LnRyYWNrRm9yQ2xlYW51cChkc3RCdWZmZXIpOworCisgICAgdC5UZXN0Q29w
eUJ1ZmZlclRvQnVmZmVyKHsKKyAgICAgIHNyY0J1ZmZlciwKKyAgICAgIHNyY09mZnNldDogMCwK
KyAgICAgIGRzdEJ1ZmZlciwKKyAgICAgIGRzdE9mZnNldDogMCwKKyAgICAgIGNvcHlTaXplOiA4
LAorICAgICAgZXhwZWN0YXRpb246IG1pc21hdGNoZWQgPyAnRmluaXNoRXJyb3InIDogJ1N1Y2Nl
c3MnLAorICAgIH0pOworICB9KTsKIAogZy50ZXN0KCdidWZmZXJfdXNhZ2UnKQogICAucGFyYW1z
U3ViY2FzZXNPbmx5KHUgPT4KQEAgLTEwMiw2ICsxNTEsNyBAQCBnLnRlc3QoJ2J1ZmZlcl91c2Fn
ZScpCiAgICAgfSk7CiAKICAgICBjb25zdCBpc1N1Y2Nlc3MgPSBzcmNVc2FnZSA9PT0gR1BVQnVm
ZmVyVXNhZ2UuQ09QWV9TUkMgJiYgZHN0VXNhZ2UgPT09IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNU
OworICAgIGNvbnN0IGV4cGVjdGF0aW9uID0gaXNTdWNjZXNzID8gJ1N1Y2Nlc3MnIDogJ0Zpbmlz
aEVycm9yJzsKIAogICAgIHQuVGVzdENvcHlCdWZmZXJUb0J1ZmZlcih7CiAgICAgICBzcmNCdWZm
ZXIsCkBAIC0xMDksNyArMTU5LDcgQEAgZy50ZXN0KCdidWZmZXJfdXNhZ2UnKQogICAgICAgZHN0
QnVmZmVyLAogICAgICAgZHN0T2Zmc2V0OiAwLAogICAgICAgY29weVNpemU6IDgsCi0gICAgICBp
c1N1Y2Nlc3MsCisgICAgICBleHBlY3RhdGlvbiwKICAgICB9KTsKICAgfSk7CiAKQEAgLTE0MCw3
ICsxOTAsNyBAQCBnLnRlc3QoJ2NvcHlfc2l6ZV9hbGlnbm1lbnQnKQogICAgICAgZHN0QnVmZmVy
LAogICAgICAgZHN0T2Zmc2V0OiAwLAogICAgICAgY29weVNpemUsCi0gICAgICBpc1N1Y2Nlc3Ms
CisgICAgICBleHBlY3RhdGlvbjogaXNTdWNjZXNzID8gJ1N1Y2Nlc3MnIDogJ0ZpbmlzaEVycm9y
JywKICAgICB9KTsKICAgfSk7CiAKQEAgLTE3Niw3ICsyMjYsNyBAQCBnLnRlc3QoJ2NvcHlfb2Zm
c2V0X2FsaWdubWVudCcpCiAgICAgICBkc3RCdWZmZXIsCiAgICAgICBkc3RPZmZzZXQsCiAgICAg
ICBjb3B5U2l6ZTogOCwKLSAgICAgIGlzU3VjY2VzcywKKyAgICAgIGV4cGVjdGF0aW9uOiBpc1N1
Y2Nlc3MgPyAnU3VjY2VzcycgOiAnRmluaXNoRXJyb3InLAogICAgIH0pOwogICB9KTsKIApAQCAt
MjE0LDcgKzI2NCw3IEBAIGcudGVzdCgnY29weV9vdmVyZmxvdycpCiAgICAgICBkc3RCdWZmZXIs
CiAgICAgICBkc3RPZmZzZXQsCiAgICAgICBjb3B5U2l6ZSwKLSAgICAgIGlzU3VjY2VzczogZmFs
c2UsCisgICAgICBleHBlY3RhdGlvbjogJ0ZpbmlzaEVycm9yJywKICAgICB9KTsKICAgfSk7CiAK
QEAgLTI1MCw3ICszMDAsNyBAQCBnLnRlc3QoJ2NvcHlfb3V0X29mX2JvdW5kcycpCiAgICAgICBk
c3RCdWZmZXIsCiAgICAgICBkc3RPZmZzZXQsCiAgICAgICBjb3B5U2l6ZSwKLSAgICAgIGlzU3Vj
Y2VzczogX2lzU3VjY2VzcywKKyAgICAgIGV4cGVjdGF0aW9uOiBfaXNTdWNjZXNzID8gJ1N1Y2Nl
c3MnIDogJ0ZpbmlzaEVycm9yJywKICAgICB9KTsKICAgfSk7CiAKQEAgLTI3NSw2ICszMjUsNiBA
QCBnLnRlc3QoJ2NvcHlfd2l0aGluX3NhbWVfYnVmZmVyJykKICAgICAgIGRzdEJ1ZmZlcjogYnVm
ZmVyLAogICAgICAgZHN0T2Zmc2V0LAogICAgICAgY29weVNpemUsCi0gICAgICBpc1N1Y2Nlc3M6
IGZhbHNlLAorICAgICAgZXhwZWN0YXRpb246ICdGaW5pc2hFcnJvcicsCiAgICAgfSk7CiAgIH0p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92
YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvY29weVRleHR1cmVUb1RleHR1cmUuc3BlYy5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGlu
Zy9jbWRzL2NvcHlUZXh0dXJlVG9UZXh0dXJlLnNwZWMuanMKaW5kZXggYTQ2YmFhMWQyNjcwLi4w
ZmRkZTg5MGZlMjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL2NvcHlUZXh0dXJlVG9UZXh0dXJlLnNw
ZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxp
ZGF0aW9uL2VuY29kaW5nL2NtZHMvY29weVRleHR1cmVUb1RleHR1cmUuc3BlYy5qcwpAQCAtMTQs
NyArMTQsNyBAQCBpbXBvcnQgewogICBrVGV4dHVyZURpbWVuc2lvbnMsCiB9IGZyb20gJy4uLy4u
Ly4uLy4uL2NhcGFiaWxpdHlfaW5mby5qcyc7CiBpbXBvcnQgeyBrUmVzb3VyY2VTdGF0ZXMgfSBm
cm9tICcuLi8uLi8uLi8uLi9ncHVfdGVzdC5qcyc7Ci1pbXBvcnQgeyBhbGlnbiB9IGZyb20gJy4u
Ly4uLy4uLy4uL3V0aWwvbWF0aC5qcyc7CitpbXBvcnQgeyBhbGlnbiwgbGNtIH0gZnJvbSAnLi4v
Li4vLi4vLi4vdXRpbC9tYXRoLmpzJzsKIGltcG9ydCB7IFZhbGlkYXRpb25UZXN0IH0gZnJvbSAn
Li4vLi4vdmFsaWRhdGlvbl90ZXN0LmpzJzsKIAogY2xhc3MgRiBleHRlbmRzIFZhbGlkYXRpb25U
ZXN0IHsKQEAgLTEwOSw3ICsxMDksNDEgQEAgZy50ZXN0KCd0ZXh0dXJlLGRldmljZV9taXNtYXRj
aCcpCiAgICAgeyBzcmNNaXNtYXRjaGVkOiB0cnVlLCBkc3RNaXNtYXRjaGVkOiBmYWxzZSB9LAog
ICAgIHsgc3JjTWlzbWF0Y2hlZDogZmFsc2UsIGRzdE1pc21hdGNoZWQ6IHRydWUgfSwKICAgXSkK
LSAgLnVuaW1wbGVtZW50ZWQoKTsKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgc3Jj
TWlzbWF0Y2hlZCwgZHN0TWlzbWF0Y2hlZCB9ID0gdC5wYXJhbXM7CisgICAgY29uc3QgbWlzbWF0
Y2hlZCA9IHNyY01pc21hdGNoZWQgfHwgZHN0TWlzbWF0Y2hlZDsKKworICAgIGlmIChtaXNtYXRj
aGVkKSB7CisgICAgICBhd2FpdCB0LnNlbGVjdE1pc21hdGNoZWREZXZpY2VPclNraXBUZXN0Q2Fz
ZSh1bmRlZmluZWQpOworICAgIH0KKworICAgIGNvbnN0IGRldmljZSA9IG1pc21hdGNoZWQgPyB0
Lm1pc21hdGNoZWREZXZpY2UgOiB0LmRldmljZTsKKyAgICBjb25zdCBzaXplID0geyB3aWR0aDog
NCwgaGVpZ2h0OiA0LCBkZXB0aE9yQXJyYXlMYXllcnM6IDEgfTsKKyAgICBjb25zdCBmb3JtYXQg
PSAncmdiYTh1bm9ybSc7CisKKyAgICBjb25zdCBzcmNUZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRl
eHR1cmUoeworICAgICAgc2l6ZSwKKyAgICAgIGZvcm1hdCwKKyAgICAgIHVzYWdlOiBHUFVUZXh0
dXJlVXNhZ2UuQ09QWV9TUkMsCisgICAgfSk7CisKKyAgICB0LnRyYWNrRm9yQ2xlYW51cChzcmNU
ZXh0dXJlKTsKKworICAgIGNvbnN0IGRzdFRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh7
CisgICAgICBzaXplLAorICAgICAgZm9ybWF0LAorICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2Fn
ZS5DT1BZX0RTVCwKKyAgICB9KTsKKworICAgIHQudHJhY2tGb3JDbGVhbnVwKGRzdFRleHR1cmUp
OworCisgICAgdC5UZXN0Q29weVRleHR1cmVUb1RleHR1cmUoCisgICAgICB7IHRleHR1cmU6IHNy
Y1RleHR1cmUgfSwKKyAgICAgIHsgdGV4dHVyZTogZHN0VGV4dHVyZSB9LAorICAgICAgeyB3aWR0
aDogMSwgaGVpZ2h0OiAxLCBkZXB0aE9yQXJyYXlMYXllcnM6IDEgfSwKKyAgICAgIG1pc21hdGNo
ZWQgPyAnRmluaXNoRXJyb3InIDogJ1N1Y2Nlc3MnCisgICAgKTsKKyAgfSk7CiAKIGcudGVzdCgn
bWlwbWFwX2xldmVsJykKICAgLmRlc2MoCkBAIC0zMTksMTYgKzM1MywyMCBAQCBUZXN0IHRoZSBm
b3JtYXRzIG9mIHRleHR1cmVzIGluIGNvcHlUZXh0dXJlVG9UZXh0dXJlIG11c3QgYmUgY29weS1j
b21wYXRpYmxlLgogICAgIGNvbnN0IGRzdEZvcm1hdEluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9b
ZHN0Rm9ybWF0XTsKICAgICBhd2FpdCB0LnNlbGVjdERldmljZU9yU2tpcFRlc3RDYXNlKFtzcmNG
b3JtYXRJbmZvLmZlYXR1cmUsIGRzdEZvcm1hdEluZm8uZmVhdHVyZV0pOwogCi0gICAgY29uc3Qg
a1RleHR1cmVTaXplID0geyB3aWR0aDogMTYsIGhlaWdodDogMTYsIGRlcHRoT3JBcnJheUxheWVy
czogMSB9OworICAgIGNvbnN0IHRleHR1cmVTaXplID0geworICAgICAgd2lkdGg6IGxjbShzcmNG
b3JtYXRJbmZvLmJsb2NrV2lkdGgsIGRzdEZvcm1hdEluZm8uYmxvY2tXaWR0aCksCisgICAgICBo
ZWlnaHQ6IGxjbShzcmNGb3JtYXRJbmZvLmJsb2NrSGVpZ2h0LCBkc3RGb3JtYXRJbmZvLmJsb2Nr
SGVpZ2h0KSwKKyAgICAgIGRlcHRoT3JBcnJheUxheWVyczogMSwKKyAgICB9OwogCiAgICAgY29u
c3Qgc3JjVGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewotICAgICAgc2l6ZToga1Rl
eHR1cmVTaXplLAorICAgICAgc2l6ZTogdGV4dHVyZVNpemUsCiAgICAgICBmb3JtYXQ6IHNyY0Zv
cm1hdCwKICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMsCiAgICAgfSk7CiAK
ICAgICBjb25zdCBkc3RUZXh0dXJlID0gdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICBz
aXplOiBrVGV4dHVyZVNpemUsCisgICAgICBzaXplOiB0ZXh0dXJlU2l6ZSwKICAgICAgIGZvcm1h
dDogZHN0Rm9ybWF0LAogICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVCwKICAg
ICB9KTsKQEAgLTM0MSw3ICszNzksNyBAQCBUZXN0IHRoZSBmb3JtYXRzIG9mIHRleHR1cmVzIGlu
IGNvcHlUZXh0dXJlVG9UZXh0dXJlIG11c3QgYmUgY29weS1jb21wYXRpYmxlLgogICAgIHQuVGVz
dENvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgICAgeyB0ZXh0dXJlOiBzcmNUZXh0dXJlIH0sCiAg
ICAgICB7IHRleHR1cmU6IGRzdFRleHR1cmUgfSwKLSAgICAgIGtUZXh0dXJlU2l6ZSwKKyAgICAg
IHRleHR1cmVTaXplLAogICAgICAgaXNTdWNjZXNzID8gJ1N1Y2Nlc3MnIDogJ0ZpbmlzaEVycm9y
JwogICAgICk7CiAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvcmVuZGVyL2luZGlyZWN0X2Ry
YXcuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFs
aWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9pbmRpcmVjdF9kcmF3LnNwZWMuanMKaW5kZXgg
MjhmZTc0ZjQ2ZGZmLi5iN2Q4MDA5MmJhNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9p
bmRpcmVjdF9kcmF3LnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvcmVuZGVyL2luZGlyZWN0X2RyYXcu
c3BlYy5qcwpAQCAtMjMsNyArMjMsNyBAQCBjbGFzcyBGIGV4dGVuZHMgVmFsaWRhdGlvblRlc3Qg
ewogCiBleHBvcnQgY29uc3QgZyA9IG1ha2VUZXN0R3JvdXAoRik7CiAKLWcudGVzdCgnaW5kaXJl
Y3RfYnVmZmVyJykKK2cudGVzdCgnaW5kaXJlY3RfYnVmZmVyX3N0YXRlJykKICAgLmRlc2MoCiAg
ICAgYAogVGVzdHMgaW5kaXJlY3QgYnVmZmVyIG11c3QgYmUgdmFsaWQuCkBAIC01Niw3ICs1Niwz
MyBAQCBnLnRlc3QoJ2luZGlyZWN0X2J1ZmZlcixkZXZpY2VfbWlzbWF0Y2gnKQogICAgICdUZXN0
cyBkcmF3KEluZGV4ZWQpSW5kaXJlY3QgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGFuIGluZGlyZWN0
IGJ1ZmZlciBjcmVhdGVkIGZyb20gYW5vdGhlciBkZXZpY2UnCiAgICkKICAgLnBhcmFtc1N1YmNh
c2VzT25seShrSW5kaXJlY3REcmF3VGVzdFBhcmFtcy5jb21iaW5lKCdtaXNtYXRjaGVkJywgW3Ry
dWUsIGZhbHNlXSkpCi0gIC51bmltcGxlbWVudGVkKCk7CisgIC5mbihhc3luYyB0ID0+IHsKKyAg
ICBjb25zdCB7IGVuY29kZXJUeXBlLCBpbmRleGVkLCBtaXNtYXRjaGVkIH0gPSB0LnBhcmFtczsK
KworICAgIGlmIChtaXNtYXRjaGVkKSB7CisgICAgICBhd2FpdCB0LnNlbGVjdE1pc21hdGNoZWRE
ZXZpY2VPclNraXBUZXN0Q2FzZSh1bmRlZmluZWQpOworICAgIH0KKworICAgIGNvbnN0IGRldmlj
ZSA9IG1pc21hdGNoZWQgPyB0Lm1pc21hdGNoZWREZXZpY2UgOiB0LmRldmljZTsKKworICAgIGNv
bnN0IGluZGlyZWN0QnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7CisgICAgICBzaXplOiAy
NTYsCisgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuSU5ESVJFQ1QsCisgICAgfSk7CisKKyAg
ICB0LnRyYWNrRm9yQ2xlYW51cChpbmRpcmVjdEJ1ZmZlcik7CisKKyAgICBjb25zdCB7IGVuY29k
ZXIsIHZhbGlkYXRlRmluaXNoIH0gPSB0LmNyZWF0ZUVuY29kZXIoZW5jb2RlclR5cGUpOworICAg
IGVuY29kZXIuc2V0UGlwZWxpbmUodC5jcmVhdGVOb09wUmVuZGVyUGlwZWxpbmUoKSk7CisKKyAg
ICBpZiAoaW5kZXhlZCkgeworICAgICAgZW5jb2Rlci5zZXRJbmRleEJ1ZmZlcih0Lm1ha2VJbmRl
eEJ1ZmZlcigpLCAndWludDMyJyk7CisgICAgICBlbmNvZGVyLmRyYXdJbmRleGVkSW5kaXJlY3Qo
aW5kaXJlY3RCdWZmZXIsIDApOworICAgIH0gZWxzZSB7CisgICAgICBlbmNvZGVyLmRyYXdJbmRp
cmVjdChpbmRpcmVjdEJ1ZmZlciwgMCk7CisgICAgfQorICAgIHZhbGlkYXRlRmluaXNoKCFtaXNt
YXRjaGVkKTsKKyAgfSk7CiAKIGcudGVzdCgnaW5kaXJlY3RfYnVmZmVyX3VzYWdlJykKICAgLmRl
c2MoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9yZW5kZXIvc2V0SW5kZXhCdWZmZXIuc3BlYy5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNv
ZGluZy9jbWRzL3JlbmRlci9zZXRJbmRleEJ1ZmZlci5zcGVjLmpzCmluZGV4IDkzMmFkMjI0N2Ex
Ny4uN2Y3NjVjZDBjOTY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9yZW5kZXIvc2V0SW5kZXhCdWZm
ZXIuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9yZW5kZXIvc2V0SW5kZXhCdWZmZXIuc3BlYy5qcwpA
QCAtMTIsNyArMTIsNyBAQCBpbXBvcnQgeyBrUmVuZGVyRW5jb2RlVHlwZVBhcmFtcywgYnVpbGRC
dWZmZXJPZmZzZXRBbmRTaXplT09CVGVzdFBhcmFtcyB9IGZyb20gJwogCiBleHBvcnQgY29uc3Qg
ZyA9IG1ha2VUZXN0R3JvdXAoVmFsaWRhdGlvblRlc3QpOwogCi1nLnRlc3QoJ2luZGV4X2J1ZmZl
cicpCitnLnRlc3QoJ2luZGV4X2J1ZmZlcl9zdGF0ZScpCiAgIC5kZXNjKAogICAgIGAKIFRlc3Rz
IGluZGV4IGJ1ZmZlciBtdXN0IGJlIHZhbGlkLgpAQCAtMzQsNyArMzQsMjYgQEAgVGVzdHMgaW5k
ZXggYnVmZmVyIG11c3QgYmUgdmFsaWQuCiBnLnRlc3QoJ2luZGV4X2J1ZmZlcixkZXZpY2VfbWlz
bWF0Y2gnKQogICAuZGVzYygnVGVzdHMgc2V0SW5kZXhCdWZmZXIgY2Fubm90IGJlIGNhbGxlZCB3
aXRoIGFuIGluZGV4IGJ1ZmZlciBjcmVhdGVkIGZyb20gYW5vdGhlciBkZXZpY2UnKQogICAucGFy
YW1zU3ViY2FzZXNPbmx5KGtSZW5kZXJFbmNvZGVUeXBlUGFyYW1zLmNvbWJpbmUoJ21pc21hdGNo
ZWQnLCBbdHJ1ZSwgZmFsc2VdKSkKLSAgLnVuaW1wbGVtZW50ZWQoKTsKKyAgLmZuKGFzeW5jIHQg
PT4geworICAgIGNvbnN0IHsgZW5jb2RlclR5cGUsIG1pc21hdGNoZWQgfSA9IHQucGFyYW1zOwor
CisgICAgaWYgKG1pc21hdGNoZWQpIHsKKyAgICAgIGF3YWl0IHQuc2VsZWN0TWlzbWF0Y2hlZERl
dmljZU9yU2tpcFRlc3RDYXNlKHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgY29uc3QgZGV2aWNl
ID0gbWlzbWF0Y2hlZCA/IHQubWlzbWF0Y2hlZERldmljZSA6IHQuZGV2aWNlOworCisgICAgY29u
c3QgaW5kZXhCdWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKKyAgICAgIHNpemU6IDE2LAor
ICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLklOREVYLAorICAgIH0pOworCisgICAgdC50cmFj
a0ZvckNsZWFudXAoaW5kZXhCdWZmZXIpOworCisgICAgY29uc3QgeyBlbmNvZGVyLCB2YWxpZGF0
ZUZpbmlzaCB9ID0gdC5jcmVhdGVFbmNvZGVyKGVuY29kZXJUeXBlKTsKKyAgICBlbmNvZGVyLnNl
dEluZGV4QnVmZmVyKGluZGV4QnVmZmVyLCAndWludDMyJyk7CisgICAgdmFsaWRhdGVGaW5pc2go
IW1pc21hdGNoZWQpOworICB9KTsKIAogZy50ZXN0KCdpbmRleF9idWZmZXJfdXNhZ2UnKQogICAu
ZGVzYygKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zZXRQaXBlbGluZS5zcGVjLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29k
aW5nL2NtZHMvcmVuZGVyL3NldFBpcGVsaW5lLnNwZWMuanMKaW5kZXggZmEzMDAwY2JiNWE2Li40
YWE2MTU4ODNiNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zZXRQaXBlbGluZS5zcGVj
LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRh
dGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zZXRQaXBlbGluZS5zcGVjLmpzCkBAIC0zMiw0ICsz
MiwzNyBAQCBUZXN0cyBzZXRQaXBlbGluZSBzaG91bGQgZ2VuZXJhdGUgYW4gZXJyb3IgaWZmIHVz
aW5nIGFuICdpbnZhbGlkJyBwaXBlbGluZS4KIGcudGVzdCgncGlwZWxpbmUsZGV2aWNlX21pc21h
dGNoJykKICAgLmRlc2MoJ1Rlc3RzIHNldFBpcGVsaW5lIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBh
IHJlbmRlciBwaXBlbGluZSBjcmVhdGVkIGZyb20gYW5vdGhlciBkZXZpY2UnKQogICAucGFyYW1z
U3ViY2FzZXNPbmx5KGtSZW5kZXJFbmNvZGVUeXBlUGFyYW1zLmNvbWJpbmUoJ21pc21hdGNoZWQn
LCBbdHJ1ZSwgZmFsc2VdKSkKLSAgLnVuaW1wbGVtZW50ZWQoKTsKKyAgLmZuKGFzeW5jIHQgPT4g
eworICAgIGNvbnN0IHsgZW5jb2RlclR5cGUsIG1pc21hdGNoZWQgfSA9IHQucGFyYW1zOworCisg
ICAgaWYgKG1pc21hdGNoZWQpIHsKKyAgICAgIGF3YWl0IHQuc2VsZWN0TWlzbWF0Y2hlZERldmlj
ZU9yU2tpcFRlc3RDYXNlKHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgY29uc3QgZGV2aWNlID0g
bWlzbWF0Y2hlZCA/IHQubWlzbWF0Y2hlZERldmljZSA6IHQuZGV2aWNlOworCisgICAgY29uc3Qg
cGlwZWxpbmUgPSBkZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoeworICAgICAgdmVydGV4OiB7
CisgICAgICAgIG1vZHVsZTogZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7CisgICAgICAgICAg
Y29kZTogYEBzdGFnZSh2ZXJ0ZXgpIGZuIG1haW4oKSAtPiBAYnVpbHRpbihwb3NpdGlvbikgdmVj
NDxmMzI+IHsgcmV0dXJuIHZlYzQ8ZjMyPigpOyB9YCwKKyAgICAgICAgfSksCisKKyAgICAgICAg
ZW50cnlQb2ludDogJ21haW4nLAorICAgICAgfSwKKworICAgICAgZnJhZ21lbnQ6IHsKKyAgICAg
ICAgbW9kdWxlOiBkZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKKyAgICAgICAgICBjb2RlOiAn
QHN0YWdlKGZyYWdtZW50KSBmbiBtYWluKCkge30nLAorICAgICAgICB9KSwKKworICAgICAgICBl
bnRyeVBvaW50OiAnbWFpbicsCisgICAgICAgIHRhcmdldHM6IFt7IGZvcm1hdDogJ3JnYmE4dW5v
cm0nLCB3cml0ZU1hc2s6IDAgfV0sCisgICAgICB9LAorCisgICAgICBwcmltaXRpdmU6IHsgdG9w
b2xvZ3k6ICd0cmlhbmdsZS1saXN0JyB9LAorICAgIH0pOworCisgICAgY29uc3QgeyBlbmNvZGVy
LCB2YWxpZGF0ZUZpbmlzaCB9ID0gdC5jcmVhdGVFbmNvZGVyKGVuY29kZXJUeXBlKTsKKyAgICBl
bmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKKyAgICB2YWxpZGF0ZUZpbmlzaCghbWlzbWF0
Y2hlZCk7CisgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvcmVuZGVyL3NldFZlcnRleEJ1ZmZl
ci5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxp
ZGF0aW9uL2VuY29kaW5nL2NtZHMvcmVuZGVyL3NldFZlcnRleEJ1ZmZlci5zcGVjLmpzCmluZGV4
IGVlN2Y2MTgzZWM1Ni4uMjg3NGVjYTY0ZDgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9yZW5kZXIv
c2V0VmVydGV4QnVmZmVyLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvcmVuZGVyL3NldFZlcnRleEJ1
ZmZlci5zcGVjLmpzCkBAIC00LDcgKzQsOCBAQAogVmFsaWRhdGlvbiB0ZXN0cyBmb3Igc2V0VmVy
dGV4QnVmZmVyIG9uIHJlbmRlciBwYXNzIGFuZCByZW5kZXIgYnVuZGxlLgogYDsKIGltcG9ydCB7
IG1ha2VUZXN0R3JvdXAgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb21tb24vZnJhbWV3b3Jr
L3Rlc3RfZ3JvdXAuanMnOwotaW1wb3J0IHsgR1BVQ29uc3QsIERlZmF1bHRMaW1pdHMgfSBmcm9t
ICcuLi8uLi8uLi8uLi8uLi9jb25zdGFudHMuanMnOworaW1wb3J0IHsga0xpbWl0SW5mbyB9IGZy
b20gJy4uLy4uLy4uLy4uLy4uL2NhcGFiaWxpdHlfaW5mby5qcyc7CitpbXBvcnQgeyBHUFVDb25z
dCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy5qcyc7CiBpbXBvcnQgeyBrUmVzb3Vy
Y2VTdGF0ZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ncHVfdGVzdC5qcyc7CiBpbXBvcnQgeyBW
YWxpZGF0aW9uVGVzdCB9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRpb25fdGVzdC5qcyc7CiAKQEAg
LTIxLDggKzIyLDggQEAgVGVzdHMgc2xvdCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbWF4VmVydGV4
QnVmZmVycyBpbiBkZXZpY2UgbGltaXRzLgogICAucGFyYW1zU3ViY2FzZXNPbmx5KAogICAgIGtS
ZW5kZXJFbmNvZGVUeXBlUGFyYW1zLmNvbWJpbmUoJ3Nsb3QnLCBbCiAgICAgICAwLAotICAgICAg
RGVmYXVsdExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJzIC0gMSwKLSAgICAgIERlZmF1bHRMaW1pdHMu
bWF4VmVydGV4QnVmZmVycywKKyAgICAgIGtMaW1pdEluZm8ubWF4VmVydGV4QnVmZmVycy5kZWZh
dWx0IC0gMSwKKyAgICAgIGtMaW1pdEluZm8ubWF4VmVydGV4QnVmZmVycy5kZWZhdWx0LAogICAg
IF0pCiAgICkKICAgLmZuKHQgPT4gewpAQCAtMzQsMTAgKzM1LDEwIEBAIFRlc3RzIHNsb3QgbXVz
dCBiZSBsZXNzIHRoYW4gdGhlIG1heFZlcnRleEJ1ZmZlcnMgaW4gZGV2aWNlIGxpbWl0cy4KIAog
ICAgIGNvbnN0IHsgZW5jb2RlciwgdmFsaWRhdGVGaW5pc2ggfSA9IHQuY3JlYXRlRW5jb2Rlcihl
bmNvZGVyVHlwZSk7CiAgICAgZW5jb2Rlci5zZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgdmVydGV4QnVm
ZmVyKTsKLSAgICB2YWxpZGF0ZUZpbmlzaChzbG90IDwgRGVmYXVsdExpbWl0cy5tYXhWZXJ0ZXhC
dWZmZXJzKTsKKyAgICB2YWxpZGF0ZUZpbmlzaChzbG90IDwga0xpbWl0SW5mby5tYXhWZXJ0ZXhC
dWZmZXJzLmRlZmF1bHQpOwogICB9KTsKIAotZy50ZXN0KCd2ZXJ0ZXhfYnVmZmVyJykKK2cudGVz
dCgndmVydGV4X2J1ZmZlcl9zdGF0ZScpCiAgIC5kZXNjKAogICAgIGAKIFRlc3RzIHZlcnRleCBi
dWZmZXIgbXVzdCBiZSB2YWxpZC4KQEAgLTU5LDcgKzYwLDI2IEBAIFRlc3RzIHZlcnRleCBidWZm
ZXIgbXVzdCBiZSB2YWxpZC4KIGcudGVzdCgndmVydGV4X2J1ZmZlcixkZXZpY2VfbWlzbWF0Y2gn
KQogICAuZGVzYygnVGVzdHMgc2V0VmVydGV4QnVmZmVyIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBh
IHZlcnRleCBidWZmZXIgY3JlYXRlZCBmcm9tIGFub3RoZXIgZGV2aWNlJykKICAgLnBhcmFtc1N1
YmNhc2VzT25seShrUmVuZGVyRW5jb2RlVHlwZVBhcmFtcy5jb21iaW5lKCdtaXNtYXRjaGVkJywg
W3RydWUsIGZhbHNlXSkpCi0gIC51bmltcGxlbWVudGVkKCk7CisgIC5mbihhc3luYyB0ID0+IHsK
KyAgICBjb25zdCB7IGVuY29kZXJUeXBlLCBtaXNtYXRjaGVkIH0gPSB0LnBhcmFtczsKKworICAg
IGlmIChtaXNtYXRjaGVkKSB7CisgICAgICBhd2FpdCB0LnNlbGVjdE1pc21hdGNoZWREZXZpY2VP
clNraXBUZXN0Q2FzZSh1bmRlZmluZWQpOworICAgIH0KKworICAgIGNvbnN0IGRldmljZSA9IG1p
c21hdGNoZWQgPyB0Lm1pc21hdGNoZWREZXZpY2UgOiB0LmRldmljZTsKKworICAgIGNvbnN0IHZl
cnRleEJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeworICAgICAgc2l6ZTogMTYsCisgICAg
ICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuVkVSVEVYLAorICAgIH0pOworCisgICAgdC50cmFja0Zv
ckNsZWFudXAodmVydGV4QnVmZmVyKTsKKworICAgIGNvbnN0IHsgZW5jb2RlciwgdmFsaWRhdGVG
aW5pc2ggfSA9IHQuY3JlYXRlRW5jb2RlcihlbmNvZGVyVHlwZSk7CisgICAgZW5jb2Rlci5zZXRW
ZXJ0ZXhCdWZmZXIoMCwgdmVydGV4QnVmZmVyKTsKKyAgICB2YWxpZGF0ZUZpbmlzaCghbWlzbWF0
Y2hlZCk7CisgIH0pOwogCiBnLnRlc3QoJ3ZlcnRleF9idWZmZXJfdXNhZ2UnKQogICAuZGVzYygK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFs
aWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zdGF0ZV90cmFja2luZy5zcGVjLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5n
L2NtZHMvcmVuZGVyL3N0YXRlX3RyYWNraW5nLnNwZWMuanMKaW5kZXggMDM1ODA2NGQ2ZWU1Li4x
YzQzZTRiYTdmZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zdGF0ZV90cmFja2luZy5z
cGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFs
aWRhdGlvbi9lbmNvZGluZy9jbWRzL3JlbmRlci9zdGF0ZV90cmFja2luZy5zcGVjLmpzCkBAIC0y
MSw3ICsyMSw3IEBAIGNsYXNzIEYgZXh0ZW5kcyBWYWxpZGF0aW9uVGVzdCB7CiAgICAgICAgIG1v
ZHVsZTogdGhpcy5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAgICAgICBjb2RlOiBg
CiAgICAgICAgICAgICBzdHJ1Y3QgSW5wdXRzIHsKLSAgICAgICAgICAgICR7cmFuZ2UoYnVmZmVy
Q291bnQsIGkgPT4gYFxuQGxvY2F0aW9uKCR7aX0pIGFfcG9zaXRpb24ke2l9IDogdmVjMzxmMzI+
O2ApLmpvaW4oJycpfQorICAgICAgICAgICAgJHtyYW5nZShidWZmZXJDb3VudCwgaSA9PiBgXG5A
bG9jYXRpb24oJHtpfSkgYV9wb3NpdGlvbiR7aX0gOiB2ZWMzPGYzMj4sYCkuam9pbignJyl9CiAg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgQHN0YWdlKHZlcnRleCkgZm4gbWFpbihpbnB1dCA6
IElucHV0cwogICAgICAgICAgICAgICApIC0+IEBidWlsdGluKHBvc2l0aW9uKSB2ZWM0PGYzMj4g
ewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92
YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvc2V0QmluZEdyb3VwLnNwZWMuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvY21kcy9z
ZXRCaW5kR3JvdXAuc3BlYy5qcwppbmRleCAwMzY1NzI2YjJiNjQuLmFiZDc2Nzg2ODkwMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0
aW9uL2VuY29kaW5nL2NtZHMvc2V0QmluZEdyb3VwLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2NtZHMvc2V0
QmluZEdyb3VwLnNwZWMuanMKQEAgLTEzMiw3ICsxMzIsNDggQEAgZy50ZXN0KCdiaW5kX2dyb3Vw
LGRldmljZV9taXNtYXRjaCcpCiAgICAgICAuY29tYmluZSgndXNlVTMyQXJyYXknLCBbdHJ1ZSwg
ZmFsc2VdKQogICAgICAgLmNvbWJpbmUoJ21pc21hdGNoZWQnLCBbdHJ1ZSwgZmFsc2VdKQogICAp
Ci0gIC51bmltcGxlbWVudGVkKCk7CisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGVu
Y29kZXJUeXBlLCB1c2VVMzJBcnJheSwgbWlzbWF0Y2hlZCB9ID0gdC5wYXJhbXM7CisKKyAgICBp
ZiAobWlzbWF0Y2hlZCkgeworICAgICAgYXdhaXQgdC5zZWxlY3RNaXNtYXRjaGVkRGV2aWNlT3JT
a2lwVGVzdENhc2UodW5kZWZpbmVkKTsKKyAgICB9CisKKyAgICBjb25zdCBkZXZpY2UgPSBtaXNt
YXRjaGVkID8gdC5taXNtYXRjaGVkRGV2aWNlIDogdC5kZXZpY2U7CisKKyAgICBjb25zdCBidWZm
ZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsKKyAgICAgIHNpemU6IDQsCisgICAgICB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuU1RPUkFHRSwKKyAgICB9KTsKKworICAgIGNvbnN0IGxheW91dCA9IGRl
dmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoeworICAgICAgZW50cmllczogWworICAgICAgICB7
CisgICAgICAgICAgYmluZGluZzogMCwKKyAgICAgICAgICB2aXNpYmlsaXR5OiB0LmVuY29kZXJU
eXBlVG9TdGFnZUZsYWcoZW5jb2RlclR5cGUpLAorICAgICAgICAgIGJ1ZmZlcjogeyB0eXBlOiAn
c3RvcmFnZScsIGhhc0R5bmFtaWNPZmZzZXQ6IHVzZVUzMkFycmF5IH0sCisgICAgICAgIH0sCisg
ICAgICBdLAorICAgIH0pOworCisgICAgY29uc3QgYmluZEdyb3VwID0gZGV2aWNlLmNyZWF0ZUJp
bmRHcm91cCh7CisgICAgICBsYXlvdXQsCisgICAgICBlbnRyaWVzOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICBiaW5kaW5nOiAwLAorICAgICAgICAgIHJlc291cmNlOiB7IGJ1ZmZlciB9LAorICAg
ICAgICB9LAorICAgICAgXSwKKyAgICB9KTsKKworICAgIGNvbnN0IHsgZW5jb2RlciwgdmFsaWRh
dGVGaW5pc2ggfSA9IHQuY3JlYXRlRW5jb2RlcihlbmNvZGVyVHlwZSk7CisgICAgaWYgKHVzZVUz
MkFycmF5KSB7CisgICAgICBlbmNvZGVyLnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXAsIG5ldyBV
aW50MzJBcnJheShbMF0pLCAwLCAxKTsKKyAgICB9IGVsc2UgeworICAgICAgZW5jb2Rlci5zZXRC
aW5kR3JvdXAoMCwgYmluZEdyb3VwKTsKKyAgICB9CisgICAgdmFsaWRhdGVGaW5pc2goIW1pc21h
dGNoZWQpOworICB9KTsKIAogZy50ZXN0KCdkeW5hbWljX29mZnNldHNfcGFzc2VkX2J1dF9ub3Rf
ZXhwZWN0ZWQnKQogICAuZGVzYygnVGVzdHMgdGhhdCBzZXRCaW5kR3JvdXAgY29ycmVjdGx5IGVy
cm9ycyBvbiB1bmV4cGVjdGVkIGR5bmFtaWNPZmZzZXRzLicpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvcHJv
Z3JhbW1hYmxlL3BpcGVsaW5lX2JpbmRfZ3JvdXBfY29tcGF0LnNwZWMuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvcHJvZ3Jh
bW1hYmxlL3BpcGVsaW5lX2JpbmRfZ3JvdXBfY29tcGF0LnNwZWMuanMKaW5kZXggZTNiNzM1Njc3
NDJjLi45Mzk0OTk4ZWU3ZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9wcm9ncmFtbWFibGUvcGlwZWxpbmVf
YmluZF9ncm91cF9jb21wYXQuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvcHJvZ3JhbW1hYmxlL3BpcGVsaW5l
X2JpbmRfZ3JvdXBfY29tcGF0LnNwZWMuanMKQEAgLTEwNCw3ICsxMDQsNyBAQCBjbGFzcyBGIGV4
dGVuZHMgVmFsaWRhdGlvblRlc3QgewogCiAgIGNyZWF0ZUNvbXB1dGVQaXBlbGluZVdpdGhMYXlv
dXQoYmluZEdyb3VwcykgewogICAgIGNvbnN0IHNoYWRlciA9IGAKLSAgICAgIFtbc3RhZ2UoY29t
cHV0ZSksIHdvcmtncm91cF9zaXplKDEsIDEsIDEpXV0KKyAgICAgIEBzdGFnZShjb21wdXRlKSBA
d29ya2dyb3VwX3NpemUoMSkKICAgICAgICAgZm4gbWFpbihAYnVpbHRpbihnbG9iYWxfaW52b2Nh
dGlvbl9pZCkgR2xvYmFsSW52b2NhdGlvbklEIDogdmVjMzx1MzI+KSB7CiAgICAgICB9CiAgICAg
YDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
dmFsaWRhdGlvbi9lbmNvZGluZy9xdWVyaWVzL2dlbmVyYWwuc3BlYy5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9xdWVyaWVz
L2dlbmVyYWwuc3BlYy5qcwppbmRleCAxZGI4ZGY5NTcwODQuLjZkYjg1OWFiNjllYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9u
L2VuY29kaW5nL3F1ZXJpZXMvZ2VuZXJhbC5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9xdWVyaWVzL2dlbmVy
YWwuc3BlYy5qcwpAQCAtMTI2LDQgKzEyNiwyNSBAQCBUZXN0cyB0aGF0IHdyaXRlIHRpbWVzdGFt
cCB0byBhIGludmFsaWQgcXVlcnkgc2V0IHRoYXQgZmFpbGVkIGR1cmluZyBjcmVhdGlvbjoKIGcu
dGVzdCgndGltZXN0YW1wX3F1ZXJ5LGRldmljZV9taXNtYXRjaCcpCiAgIC5kZXNjKCdUZXN0cyB3
cml0ZVRpbWVzdGFtcCBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBxdWVyeSBzZXQgY3JlYXRlZCBm
cm9tIGFub3RoZXIgZGV2aWNlJykKICAgLnBhcmFtc1N1YmNhc2VzT25seSh1ID0+IHUuY29tYmlu
ZSgnbWlzbWF0Y2hlZCcsIFt0cnVlLCBmYWxzZV0pKQotICAudW5pbXBsZW1lbnRlZCgpOworICAu
Zm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyBtaXNtYXRjaGVkIH0gPSB0LnBhcmFtczsKKwor
ICAgIGF3YWl0IHQuc2VsZWN0RGV2aWNlRm9yUXVlcnlUeXBlT3JTa2lwVGVzdENhc2UoJ3RpbWVz
dGFtcCcpOworCisgICAgaWYgKG1pc21hdGNoZWQpIHsKKyAgICAgIGF3YWl0IHQuc2VsZWN0TWlz
bWF0Y2hlZERldmljZU9yU2tpcFRlc3RDYXNlKCd0aW1lc3RhbXAtcXVlcnknKTsKKyAgICB9CisK
KyAgICBjb25zdCBkZXZpY2UgPSBtaXNtYXRjaGVkID8gdC5taXNtYXRjaGVkRGV2aWNlIDogdC5k
ZXZpY2U7CisKKyAgICBjb25zdCBxdWVyeVNldCA9IGRldmljZS5jcmVhdGVRdWVyeVNldCh7Cisg
ICAgICB0eXBlOiAndGltZXN0YW1wJywKKyAgICAgIGNvdW50OiAyLAorICAgIH0pOworCisgICAg
dC50cmFja0ZvckNsZWFudXAocXVlcnlTZXQpOworCisgICAgY29uc3QgZW5jb2RlciA9IHQuY3Jl
YXRlRW5jb2Rlcignbm9uLXBhc3MnKTsKKyAgICBlbmNvZGVyLmVuY29kZXIud3JpdGVUaW1lc3Rh
bXAocXVlcnlTZXQsIDApOworICAgIGVuY29kZXIudmFsaWRhdGVGaW5pc2goIW1pc21hdGNoZWQp
OworICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9xdWVyaWVzL3Jlc29sdmVRdWVyeVNldC5zcGVjLmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2Vu
Y29kaW5nL3F1ZXJpZXMvcmVzb2x2ZVF1ZXJ5U2V0LnNwZWMuanMKaW5kZXggMDY4ZTQ0ODAyNWFi
Li4zYTIyYTNmMTQxNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9xdWVyaWVzL3Jlc29sdmVRdWVyeVNldC5z
cGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFs
aWRhdGlvbi9lbmNvZGluZy9xdWVyaWVzL3Jlc29sdmVRdWVyeVNldC5zcGVjLmpzCkBAIC01LDI4
ICs1LDMyIEBAIFZhbGlkYXRpb24gdGVzdHMgZm9yIHJlc29sdmVRdWVyeVNldC4KIGA7CiBpbXBv
cnQgeyBtYWtlVGVzdEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29y
ay90ZXN0X2dyb3VwLmpzJzsKIGltcG9ydCB7IEdQVUNvbnN0IH0gZnJvbSAnLi4vLi4vLi4vLi4v
Y29uc3RhbnRzLmpzJzsKK2ltcG9ydCB7IGtSZXNvdXJjZVN0YXRlcyB9IGZyb20gJy4uLy4uLy4u
Ly4uL2dwdV90ZXN0LmpzJzsKIGltcG9ydCB7IFZhbGlkYXRpb25UZXN0IH0gZnJvbSAnLi4vLi4v
dmFsaWRhdGlvbl90ZXN0LmpzJzsKIAogZXhwb3J0IGNvbnN0IGcgPSBtYWtlVGVzdEdyb3VwKFZh
bGlkYXRpb25UZXN0KTsKIAogZXhwb3J0IGNvbnN0IGtRdWVyeUNvdW50ID0gMjsKIAotZy50ZXN0
KCdpbnZhbGlkX3F1ZXJ5c2V0X2FuZF9kZXN0aW5hdGlvbl9idWZmZXInKQorZy50ZXN0KCdxdWVy
eXNldF9hbmRfZGVzdGluYXRpb25fYnVmZmVyX3N0YXRlJykKICAgLmRlc2MoCiAgICAgYAotVGVz
dHMgdGhhdCByZXNvbHZlIHF1ZXJ5IHNldCB3aXRoIGludmFsaWQgb2JqZWN0LgotLSBpbnZhbGlk
IEdQVVF1ZXJ5U2V0IHRoYXQgZmFpbGVkIGR1cmluZyBjcmVhdGlvbi4KLS0gaW52YWxpZCBkZXN0
aW5hdGlvbiBidWZmZXIgdGhhdCBmYWlsZWQgZHVyaW5nIGNyZWF0aW9uLgorVGVzdHMgdGhhdCBy
ZXNvbHZlIHF1ZXJ5IHNldCBtdXN0IGJlIHdpdGggdmFsaWQgcXVlcnkgc2V0IGFuZCBkZXN0aW5h
dGlvbiBidWZmZXIuCistIHtpbnZhbGlkLCBkZXN0cm95ZWR9IEdQVVF1ZXJ5U2V0IHJlc3VsdHMg
aW4gdmFsaWRhdGlvbiBlcnJvci4KKy0ge2ludmFsaWQsIGRlc3Ryb3llZH0gZGVzdGluYXRpb24g
YnVmZmVyIHJlc3VsdHMgaW4gdmFsaWRhdGlvbiBlcnJvci4KICAgYAogICApCi0gIC5wYXJhbXNT
dWJjYXNlc09ubHkoWwotICAgIHsgcXVlcnlTZXRTdGF0ZTogJ3ZhbGlkJywgZGVzdGluYXRpb25T
dGF0ZTogJ3ZhbGlkJyB9LCAvLyBjb250cm9sIGNhc2UKLSAgICB7IHF1ZXJ5U2V0U3RhdGU6ICdp
bnZhbGlkJywgZGVzdGluYXRpb25TdGF0ZTogJ3ZhbGlkJyB9LAotICAgIHsgcXVlcnlTZXRTdGF0
ZTogJ3ZhbGlkJywgZGVzdGluYXRpb25TdGF0ZTogJ2ludmFsaWQnIH0sCi0gIF0pCisgIC5wYXJh
bXModSA9PgorICAgIHUgLy8KKyAgICAgIC5jb21iaW5lKCdxdWVyeVNldFN0YXRlJywga1Jlc291
cmNlU3RhdGVzKQorICAgICAgLmNvbWJpbmUoJ2Rlc3RpbmF0aW9uU3RhdGUnLCBrUmVzb3VyY2VT
dGF0ZXMpCisgICkKICAgLmZuKGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHsgcXVlcnlTZXRTdGF0
ZSwgZGVzdGluYXRpb25TdGF0ZSB9ID0gdC5wYXJhbXM7CiAKKyAgICBjb25zdCBzaG91bGRCZVZh
bGlkID0gcXVlcnlTZXRTdGF0ZSAhPT0gJ2ludmFsaWQnICYmIGRlc3RpbmF0aW9uU3RhdGUgIT09
ICdpbnZhbGlkJzsKKyAgICBjb25zdCBzaG91bGRTdWJtaXRTdWNjZXNzID0gcXVlcnlTZXRTdGF0
ZSA9PT0gJ3ZhbGlkJyAmJiBkZXN0aW5hdGlvblN0YXRlID09PSAndmFsaWQnOworCiAgICAgY29u
c3QgcXVlcnlTZXQgPSB0LmNyZWF0ZVF1ZXJ5U2V0V2l0aFN0YXRlKHF1ZXJ5U2V0U3RhdGUpOwog
CiAgICAgY29uc3QgZGVzdGluYXRpb24gPSB0LmNyZWF0ZUJ1ZmZlcldpdGhTdGF0ZShkZXN0aW5h
dGlvblN0YXRlLCB7CkBAIC0zNiw3ICs0MCw3IEBAIFRlc3RzIHRoYXQgcmVzb2x2ZSBxdWVyeSBz
ZXQgd2l0aCBpbnZhbGlkIG9iamVjdC4KIAogICAgIGNvbnN0IGVuY29kZXIgPSB0LmNyZWF0ZUVu
Y29kZXIoJ25vbi1wYXNzJyk7CiAgICAgZW5jb2Rlci5lbmNvZGVyLnJlc29sdmVRdWVyeVNldChx
dWVyeVNldCwgMCwgMSwgZGVzdGluYXRpb24sIDApOwotICAgIGVuY29kZXIudmFsaWRhdGVGaW5p
c2gocXVlcnlTZXRTdGF0ZSA9PT0gJ3ZhbGlkJyAmJiBkZXN0aW5hdGlvblN0YXRlID09PSAndmFs
aWQnKTsKKyAgICBlbmNvZGVyLnZhbGlkYXRlRmluaXNoQW5kU3VibWl0KHNob3VsZEJlVmFsaWQs
IHNob3VsZFN1Ym1pdFN1Y2Nlc3MpOwogICB9KTsKIAogZy50ZXN0KCdmaXJzdF9xdWVyeV9hbmRf
cXVlcnlfY291bnQnKQpAQCAtMTUxLDQgKzE1NSwzMiBAQCBnLnRlc3QoJ3F1ZXJ5X3NldF9idWZm
ZXIsZGV2aWNlX21pc21hdGNoJykKICAgICB7IHF1ZXJ5U2V0TWlzbWF0Y2hlZDogdHJ1ZSwgYnVm
ZmVyTWlzbWF0Y2hlZDogZmFsc2UgfSwKICAgICB7IHF1ZXJ5U2V0TWlzbWF0Y2hlZDogZmFsc2Us
IGJ1ZmZlck1pc21hdGNoZWQ6IHRydWUgfSwKICAgXSkKLSAgLnVuaW1wbGVtZW50ZWQoKTsKKyAg
LmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgcXVlcnlTZXRNaXNtYXRjaGVkLCBidWZmZXJN
aXNtYXRjaGVkIH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCBtaXNtYXRjaGVkID0gcXVlcnlTZXRN
aXNtYXRjaGVkIHx8IGJ1ZmZlck1pc21hdGNoZWQ7CisKKyAgICBpZiAobWlzbWF0Y2hlZCkgewor
ICAgICAgYXdhaXQgdC5zZWxlY3RNaXNtYXRjaGVkRGV2aWNlT3JTa2lwVGVzdENhc2UodW5kZWZp
bmVkKTsKKyAgICB9CisKKyAgICBjb25zdCBkZXZpY2UgPSBtaXNtYXRjaGVkID8gdC5taXNtYXRj
aGVkRGV2aWNlIDogdC5kZXZpY2U7CisgICAgY29uc3QgcXVlcnlDb3V0ID0gMTsKKworICAgIGNv
bnN0IHF1ZXJ5U2V0ID0gZGV2aWNlLmNyZWF0ZVF1ZXJ5U2V0KHsKKyAgICAgIHR5cGU6ICdvY2Ns
dXNpb24nLAorICAgICAgY291bnQ6IHF1ZXJ5Q291dCwKKyAgICB9KTsKKworICAgIHQudHJhY2tG
b3JDbGVhbnVwKHF1ZXJ5U2V0KTsKKworICAgIGNvbnN0IGJ1ZmZlciA9IGRldmljZS5jcmVhdGVC
dWZmZXIoeworICAgICAgc2l6ZTogcXVlcnlDb3V0ICogOCwKKyAgICAgIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5RVUVSWV9SRVNPTFZFLAorICAgIH0pOworCisgICAgdC50cmFja0ZvckNsZWFudXAo
YnVmZmVyKTsKKworICAgIGNvbnN0IGVuY29kZXIgPSB0LmNyZWF0ZUVuY29kZXIoJ25vbi1wYXNz
Jyk7CisgICAgZW5jb2Rlci5lbmNvZGVyLnJlc29sdmVRdWVyeVNldChxdWVyeVNldCwgMCwgcXVl
cnlDb3V0LCBidWZmZXIsIDApOworICAgIGVuY29kZXIudmFsaWRhdGVGaW5pc2goIW1pc21hdGNo
ZWQpOworICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9yZW5kZXJfYnVuZGxlLnNwZWMuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2Rpbmcv
cmVuZGVyX2J1bmRsZS5zcGVjLmpzCmluZGV4IDNkZmQyODg3NjdiOC4uNjJjYTBmZTk1OTBjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlk
YXRpb24vZW5jb2RpbmcvcmVuZGVyX2J1bmRsZS5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9yZW5kZXJfYnVu
ZGxlLnNwZWMuanMKQEAgLTQzLDE3ICs0MywxNSBAQCBnLnRlc3QoJ2RldmljZV9taXNtYXRjaCcp
CiAgICAgICBhd2FpdCB0LnNlbGVjdE1pc21hdGNoZWREZXZpY2VPclNraXBUZXN0Q2FzZSh1bmRl
ZmluZWQpOwogICAgIH0KIAorICAgIGNvbnN0IGRldmljZSA9IG1pc21hdGNoZWQgPyB0Lm1pc21h
dGNoZWREZXZpY2UgOiB0LmRldmljZTsKKwogICAgIGNvbnN0IGRlc2NyaXB0b3IgPSB7CiAgICAg
ICBjb2xvckZvcm1hdHM6IFsncmdiYTh1bm9ybSddLAogICAgIH07CiAKLSAgICBjb25zdCBidW5k
bGUwRW5jb2RlciA9IG1pc21hdGNoZWQKLSAgICAgID8gdC5taXNtYXRjaGVkRGV2aWNlLmNyZWF0
ZVJlbmRlckJ1bmRsZUVuY29kZXIoZGVzY3JpcHRvcikKLSAgICAgIDogdC5kZXZpY2UuY3JlYXRl
UmVuZGVyQnVuZGxlRW5jb2RlcihkZXNjcmlwdG9yKTsKKyAgICBjb25zdCBidW5kbGUwRW5jb2Rl
ciA9IGRldmljZS5jcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGRlc2NyaXB0b3IpOwogICAgIGNv
bnN0IGJ1bmRsZTAgPSBidW5kbGUwRW5jb2Rlci5maW5pc2goKTsKLSAgICBjb25zdCBidW5kbGUx
RW5jb2RlciA9IG1pc21hdGNoZWQKLSAgICAgID8gdC5taXNtYXRjaGVkRGV2aWNlLmNyZWF0ZVJl
bmRlckJ1bmRsZUVuY29kZXIoZGVzY3JpcHRvcikKLSAgICAgIDogdC5kZXZpY2UuY3JlYXRlUmVu
ZGVyQnVuZGxlRW5jb2RlcihkZXNjcmlwdG9yKTsKKyAgICBjb25zdCBidW5kbGUxRW5jb2RlciA9
IGRldmljZS5jcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGRlc2NyaXB0b3IpOwogICAgIGNvbnN0
IGJ1bmRsZTEgPSBidW5kbGUxRW5jb2Rlci5maW5pc2goKTsKIAogICAgIGNvbnN0IGVuY29kZXIg
PSB0LmNyZWF0ZUVuY29kZXIoJ3JlbmRlciBwYXNzJyk7CkBAIC0xNzUsNzcgKzE3MywyNSBAQCBn
LnRlc3QoJ2RlcHRoX3N0ZW5jaWxfcmVhZG9ubHlfbWlzbWF0Y2gnKQogICAgIGAKICAgKQogICAu
cGFyYW1zKHUgPT4KLSAgICB1LmNvbWJpbmUoJ2RlcHRoU3RlbmNpbEZvcm1hdCcsIGtEZXB0aFN0
ZW5jaWxGb3JtYXRzKS5jb21iaW5lV2l0aFBhcmFtcyhbCi0gICAgICB7Ci0gICAgICAgIGJ1bmRs
ZURlcHRoUmVhZE9ubHk6IGZhbHNlLAotICAgICAgICBidW5kbGVTdGVuY2lsUmVhZE9ubHk6IGZh
bHNlLAotICAgICAgICBwYXNzRGVwdGhSZWFkT25seTogZmFsc2UsCi0gICAgICAgIHBhc3NTdGVu
Y2lsUmVhZE9ubHk6IGZhbHNlLAotICAgICAgfSwKLQotICAgICAgewotICAgICAgICBidW5kbGVE
ZXB0aFJlYWRPbmx5OiB0cnVlLAotICAgICAgICBidW5kbGVTdGVuY2lsUmVhZE9ubHk6IGZhbHNl
LAotICAgICAgICBwYXNzRGVwdGhSZWFkT25seTogdHJ1ZSwKLSAgICAgICAgcGFzc1N0ZW5jaWxS
ZWFkT25seTogZmFsc2UsCi0gICAgICB9LAotCi0gICAgICB7Ci0gICAgICAgIGJ1bmRsZURlcHRo
UmVhZE9ubHk6IGZhbHNlLAotICAgICAgICBidW5kbGVTdGVuY2lsUmVhZE9ubHk6IHRydWUsCi0g
ICAgICAgIHBhc3NEZXB0aFJlYWRPbmx5OiBmYWxzZSwKLSAgICAgICAgcGFzc1N0ZW5jaWxSZWFk
T25seTogdHJ1ZSwKLSAgICAgIH0sCi0KLSAgICAgIHsKLSAgICAgICAgYnVuZGxlRGVwdGhSZWFk
T25seTogdHJ1ZSwKLSAgICAgICAgYnVuZGxlU3RlbmNpbFJlYWRPbmx5OiB0cnVlLAotICAgICAg
ICBwYXNzRGVwdGhSZWFkT25seTogdHJ1ZSwKLSAgICAgICAgcGFzc1N0ZW5jaWxSZWFkT25seTog
dHJ1ZSwKLSAgICAgIH0sCi0KLSAgICAgIHsKLSAgICAgICAgYnVuZGxlRGVwdGhSZWFkT25seTog
dHJ1ZSwKLSAgICAgICAgYnVuZGxlU3RlbmNpbFJlYWRPbmx5OiBmYWxzZSwKLSAgICAgICAgcGFz
c0RlcHRoUmVhZE9ubHk6IHRydWUsCi0gICAgICAgIHBhc3NTdGVuY2lsUmVhZE9ubHk6IHRydWUs
Ci0gICAgICB9LAotCi0gICAgICB7Ci0gICAgICAgIGJ1bmRsZURlcHRoUmVhZE9ubHk6IGZhbHNl
LAotICAgICAgICBidW5kbGVTdGVuY2lsUmVhZE9ubHk6IHRydWUsCi0gICAgICAgIHBhc3NEZXB0
aFJlYWRPbmx5OiB0cnVlLAotICAgICAgICBwYXNzU3RlbmNpbFJlYWRPbmx5OiB0cnVlLAotICAg
ICAgfSwKLQotICAgICAgewotICAgICAgICBidW5kbGVEZXB0aFJlYWRPbmx5OiBmYWxzZSwKLSAg
ICAgICAgYnVuZGxlU3RlbmNpbFJlYWRPbmx5OiBmYWxzZSwKLSAgICAgICAgcGFzc0RlcHRoUmVh
ZE9ubHk6IHRydWUsCi0gICAgICAgIHBhc3NTdGVuY2lsUmVhZE9ubHk6IHRydWUsCi0gICAgICB9
LAotCi0gICAgICB7Ci0gICAgICAgIGJ1bmRsZURlcHRoUmVhZE9ubHk6IHRydWUsCi0gICAgICAg
IGJ1bmRsZVN0ZW5jaWxSZWFkT25seTogdHJ1ZSwKLSAgICAgICAgcGFzc0RlcHRoUmVhZE9ubHk6
IGZhbHNlLAotICAgICAgICBwYXNzU3RlbmNpbFJlYWRPbmx5OiB0cnVlLAotICAgICAgfSwKLQot
ICAgICAgewotICAgICAgICBidW5kbGVEZXB0aFJlYWRPbmx5OiB0cnVlLAotICAgICAgICBidW5k
bGVTdGVuY2lsUmVhZE9ubHk6IHRydWUsCi0gICAgICAgIHBhc3NEZXB0aFJlYWRPbmx5OiB0cnVl
LAotICAgICAgICBwYXNzU3RlbmNpbFJlYWRPbmx5OiBmYWxzZSwKLSAgICAgIH0sCi0KLSAgICAg
IHsKLSAgICAgICAgYnVuZGxlRGVwdGhSZWFkT25seTogdHJ1ZSwKLSAgICAgICAgYnVuZGxlU3Rl
bmNpbFJlYWRPbmx5OiB0cnVlLAotICAgICAgICBwYXNzRGVwdGhSZWFkT25seTogZmFsc2UsCi0g
ICAgICAgIHBhc3NTdGVuY2lsUmVhZE9ubHk6IGZhbHNlLAotICAgICAgfSwKLSAgICBdKQorICAg
IHUKKyAgICAgIC5jb21iaW5lKCdkZXB0aFN0ZW5jaWxGb3JtYXQnLCBrRGVwdGhTdGVuY2lsRm9y
bWF0cykKKyAgICAgIC5iZWdpblN1YmNhc2VzKCkKKyAgICAgIC5jb21iaW5lKCdidW5kbGVEZXB0
aFJlYWRPbmx5JywgW2ZhbHNlLCB0cnVlXSkKKyAgICAgIC5jb21iaW5lKCdidW5kbGVTdGVuY2ls
UmVhZE9ubHknLCBbZmFsc2UsIHRydWVdKQorICAgICAgLmNvbWJpbmUoJ3Bhc3NEZXB0aFJlYWRP
bmx5JywgW2ZhbHNlLCB0cnVlXSkKKyAgICAgIC5jb21iaW5lKCdwYXNzU3RlbmNpbFJlYWRPbmx5
JywgW2ZhbHNlLCB0cnVlXSkKKyAgICAgIC5maWx0ZXIocCA9PiB7CisgICAgICAgIC8vIEZvciBj
b21iaW5lZCBkZXB0aC9zdGVuY2lsIGZvcm1hdHMgdGhlIGRlcHRoIGFuZCBzdGVuY2lsIHJlYWQg
b25seSBzdGF0ZSBtdXN0IG1hdGNoCisgICAgICAgIC8vIGluIG9yZGVyIHRvIGNyZWF0ZSBhIHZh
bGlkIHJlbmRlciBidW5kbGUgb3IgcmVuZGVyIHBhc3MuCisgICAgICAgIGNvbnN0IGRlcHRoU3Rl
bmNpbEluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bcC5kZXB0aFN0ZW5jaWxGb3JtYXRdOworICAg
ICAgICBpZiAoZGVwdGhTdGVuY2lsSW5mby5kZXB0aCAmJiBkZXB0aFN0ZW5jaWxJbmZvLnN0ZW5j
aWwpIHsKKyAgICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgcC5wYXNzRGVwdGhSZWFkT25s
eSA9PT0gcC5wYXNzU3RlbmNpbFJlYWRPbmx5ICYmCisgICAgICAgICAgICBwLmJ1bmRsZURlcHRo
UmVhZE9ubHkgPT09IHAuYnVuZGxlU3RlbmNpbFJlYWRPbmx5CisgICAgICAgICAgKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0pCiAgICkKICAgLmZuKGFzeW5jIHQg
PT4gewogICAgIGNvbnN0IHsKQEAgLTI1NywxMyArMjAzLDkgQEAgZy50ZXN0KCdkZXB0aF9zdGVu
Y2lsX3JlYWRvbmx5X21pc21hdGNoJykKICAgICB9ID0gdC5wYXJhbXM7CiAgICAgYXdhaXQgdC5z
ZWxlY3REZXZpY2VGb3JUZXh0dXJlRm9ybWF0T3JTa2lwVGVzdENhc2UoZGVwdGhTdGVuY2lsRm9y
bWF0KTsKIAotICAgIGxldCBjb21wYXRpYmxlID0KLSAgICAgIGJ1bmRsZURlcHRoUmVhZE9ubHkg
PT09IHBhc3NEZXB0aFJlYWRPbmx5ICYmIGJ1bmRsZVN0ZW5jaWxSZWFkT25seSA9PT0gcGFzc1N0
ZW5jaWxSZWFkT25seTsKLQotICAgIGNvbnN0IGRlcHRoU3RlbmNpbEluZm8gPSBrVGV4dHVyZUZv
cm1hdEluZm9bZGVwdGhTdGVuY2lsRm9ybWF0XTsKLSAgICBpZiAoZGVwdGhTdGVuY2lsSW5mby5k
ZXB0aCAmJiBkZXB0aFN0ZW5jaWxJbmZvLnN0ZW5jaWwpIHsKLSAgICAgIGNvbXBhdGlibGUgPSBj
b21wYXRpYmxlICYmIGJ1bmRsZURlcHRoUmVhZE9ubHkgPT09IGJ1bmRsZVN0ZW5jaWxSZWFkT25s
eTsKLSAgICB9CisgICAgY29uc3QgY29tcGF0aWJsZSA9CisgICAgICAoIXBhc3NEZXB0aFJlYWRP
bmx5IHx8IGJ1bmRsZURlcHRoUmVhZE9ubHkgPT09IHBhc3NEZXB0aFJlYWRPbmx5KSAmJgorICAg
ICAgKCFwYXNzU3RlbmNpbFJlYWRPbmx5IHx8IGJ1bmRsZVN0ZW5jaWxSZWFkT25seSA9PT0gcGFz
c1N0ZW5jaWxSZWFkT25seSk7CiAKICAgICBjb25zdCBidW5kbGVFbmNvZGVyID0gdC5kZXZpY2Uu
Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcih7CiAgICAgICBjb2xvckZvcm1hdHM6IFtdLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0
aW9uL2ltYWdlX2NvcHkvYnVmZmVyX3JlbGF0ZWQuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9pbWFnZV9jb3B5L2J1ZmZlcl9yZWxh
dGVkLnNwZWMuanMKaW5kZXggZjdkMDJkOTNkZGQzLi5hOTY0Y2FiZTM3MmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9pbWFn
ZV9jb3B5L2J1ZmZlcl9yZWxhdGVkLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2ltYWdlX2NvcHkvYnVmZmVyX3JlbGF0ZWQu
c3BlYy5qcwpAQCAtMTYsNyArMTYsNyBAQCBpbXBvcnQgeyBJbWFnZUNvcHlUZXN0LCBmb3JtYXRD
b3B5YWJsZVdpdGhNZXRob2QgfSBmcm9tICcuL2ltYWdlX2NvcHkuanMnOwogCiBleHBvcnQgY29u
c3QgZyA9IG1ha2VUZXN0R3JvdXAoSW1hZ2VDb3B5VGVzdCk7CiAKLWcudGVzdCgndmFsaWQnKQor
Zy50ZXN0KCdidWZmZXJfc3RhdGUnKQogICAuZGVzYygKICAgICBgCiBUZXN0IHRoYXQgdGhlIGJ1
ZmZlciBtdXN0IGJlIHZhbGlkIGFuZCBub3QgZGVzdHJveWVkLgpAQCAtMzksOCArMzksOSBAQCBU
ZXN0IHRoYXQgdGhlIGJ1ZmZlciBtdXN0IGJlIHZhbGlkIGFuZCBub3QgZGVzdHJveWVkLgogICAg
ICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9E
U1QsCiAgICAgfSk7CiAKLSAgICBjb25zdCBzdWNjZXNzID0gc3RhdGUgIT09ICdpbnZhbGlkJzsK
LSAgICBjb25zdCBzdWJtaXQgPSBzdGF0ZSAhPT0gJ2Rlc3Ryb3llZCc7CisgICAgLy8gSW52YWxp
ZCBidWZmZXIgd2lsbCBmYWlsIGZpbmlzaCwgYW5kIGRlc3Ryb3llZCBidWZmZXIgd2lsbCBmYWls
IHN1Ym1pdAorICAgIGNvbnN0IHN1Ym1pdCA9IHN0YXRlICE9PSAnaW52YWxpZCc7CisgICAgY29u
c3Qgc3VjY2VzcyA9IHN0YXRlID09PSAndmFsaWQnOwogCiAgICAgY29uc3QgdGV4dHVyZSA9IHQu
ZGV2aWNlLmNyZWF0ZVRleHR1cmUoewogICAgICAgc2l6ZTogeyB3aWR0aDogMiwgaGVpZ2h0OiAy
LCBkZXB0aE9yQXJyYXlMYXllcnM6IDEgfSwKQEAgLTU3LDYgKzU4LDQ1IEBAIFRlc3QgdGhhdCB0
aGUgYnVmZmVyIG11c3QgYmUgdmFsaWQgYW5kIG5vdCBkZXN0cm95ZWQuCiAgICAgKTsKICAgfSk7
CiAKK2cudGVzdCgnYnVmZmVyLGRldmljZV9taXNtYXRjaCcpCisgIC5kZXNjKCdUZXN0cyB0aGUg
aW1hZ2UgY29waWVzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBhIGJ1ZmZlciBjcmVhdGVkIGZyb20g
YW5vdGhlciBkZXZpY2UnKQorICAucGFyYW1zU3ViY2FzZXNPbmx5KHUgPT4KKyAgICB1LmNvbWJp
bmUoJ21ldGhvZCcsIFsnQ29weUIyVCcsICdDb3B5VDJCJ10pLmNvbWJpbmUoJ21pc21hdGNoZWQn
LCBbdHJ1ZSwgZmFsc2VdKQorICApCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IG1l
dGhvZCwgbWlzbWF0Y2hlZCB9ID0gdC5wYXJhbXM7CisKKyAgICBpZiAobWlzbWF0Y2hlZCkgewor
ICAgICAgYXdhaXQgdC5zZWxlY3RNaXNtYXRjaGVkRGV2aWNlT3JTa2lwVGVzdENhc2UodW5kZWZp
bmVkKTsKKyAgICB9CisKKyAgICBjb25zdCBkZXZpY2UgPSBtaXNtYXRjaGVkID8gdC5taXNtYXRj
aGVkRGV2aWNlIDogdC5kZXZpY2U7CisKKyAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRl
QnVmZmVyKHsKKyAgICAgIHNpemU6IDE2LAorICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNP
UFlfU1JDIHwgR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QsCisgICAgfSk7CisKKyAgICB0LnRyYWNr
Rm9yQ2xlYW51cChidWZmZXIpOworCisgICAgY29uc3QgdGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0
ZVRleHR1cmUoeworICAgICAgc2l6ZTogeyB3aWR0aDogMiwgaGVpZ2h0OiAyLCBkZXB0aE9yQXJy
YXlMYXllcnM6IDEgfSwKKyAgICAgIGZvcm1hdDogJ3JnYmE4dW5vcm0nLAorICAgICAgdXNhZ2U6
IEdQVVRleHR1cmVVc2FnZS5DT1BZX1NSQyB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVCwKKyAg
ICB9KTsKKworICAgIGNvbnN0IHN1Y2Nlc3MgPSAhbWlzbWF0Y2hlZDsKKworICAgIC8vIEV4cGVj
dCBzdWNjZXNzIGluIGJvdGggZmluaXNoIGFuZCBzdWJtaXQsIG9yIHZhbGlkYXRpb24gZXJyb3Ig
aW4gZmluaXNoCisgICAgdC50ZXN0QnVmZmVyKAorICAgICAgYnVmZmVyLAorICAgICAgdGV4dHVy
ZSwKKyAgICAgIHsgYnl0ZXNQZXJSb3c6IDAgfSwKKyAgICAgIHsgd2lkdGg6IDAsIGhlaWdodDog
MCwgZGVwdGhPckFycmF5TGF5ZXJzOiAwIH0sCisgICAgICB7IGRhdGFTaXplOiAxNiwgbWV0aG9k
LCBzdWNjZXNzLCBzdWJtaXQ6IHN1Y2Nlc3MgfQorICAgICk7CisgIH0pOworCiBnLnRlc3QoJ3Vz
YWdlJykKICAgLmRlc2MoCiAgICAgYApAQCAtOTYsMTIgKzEzNiwxMyBAQCBUT0RPIHVwZGF0ZSBz
dWNoIHRoYXQgaXQgdGVzdHMKICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMg
fCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QsCiAgICAgfSk7CiAKKyAgICAvLyBFeHBlY3Qgc3Vj
Y2VzcyBpbiBib3RoIGZpbmlzaCBhbmQgc3VibWl0LCBvciB2YWxpZGF0aW9uIGVycm9yIGluIGZp
bmlzaAogICAgIHQudGVzdEJ1ZmZlcigKICAgICAgIGJ1ZmZlciwKICAgICAgIHRleHR1cmUsCiAg
ICAgICB7IGJ5dGVzUGVyUm93OiAwIH0sCiAgICAgICB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAsIGRl
cHRoT3JBcnJheUxheWVyczogMCB9LAotICAgICAgeyBkYXRhU2l6ZTogMTYsIG1ldGhvZCwgc3Vj
Y2VzcyB9CisgICAgICB7IGRhdGFTaXplOiAxNiwgbWV0aG9kLCBzdWNjZXNzLCBzdWJtaXQ6IHN1
Y2Nlc3MgfQogICAgICk7CiAgIH0pOwogCkBAIC0xNzksOSArMjIwLDExIEBAIFRlc3QgdGhhdCBi
eXRlc1BlclJvdyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMjU2IGZvciBDb3B5QjJUIGFuZCBDb3B5
VDJCIGlmIGl0IGlzCiAKICAgICBjb25zdCBjb3B5U2l6ZSA9IFtpbmZvLmJsb2NrV2lkdGgsIGNv
cHlIZWlnaHRJbkJsb2NrcyAqIGluZm8uYmxvY2tIZWlnaHQsIDFdOwogCisgICAgLy8gRXhwZWN0
IHN1Y2Nlc3MgaW4gYm90aCBmaW5pc2ggYW5kIHN1Ym1pdCwgb3IgdmFsaWRhdGlvbiBlcnJvciBp
biBmaW5pc2gKICAgICB0LnRlc3RCdWZmZXIoYnVmZmVyLCB0ZXh0dXJlLCB7IGJ5dGVzUGVyUm93
IH0sIGNvcHlTaXplLCB7CiAgICAgICBkYXRhU2l6ZTogNTEyICogOCAqIDE2LAogICAgICAgbWV0
aG9kLAogICAgICAgc3VjY2VzcywKKyAgICAgIHN1Ym1pdDogc3VjY2VzcywKICAgICB9KTsKICAg
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L3ZhbGlkYXRpb24vaW1hZ2VfY29weS9pbWFnZV9jb3B5LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2ltYWdlX2NvcHkvaW1hZ2VfY29weS5q
cwppbmRleCA4OTkwMGMzOTE4OTAuLmQxZGNjMDNkYmExZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2ltYWdlX2NvcHkvaW1h
Z2VfY29weS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L3ZhbGlkYXRpb24vaW1hZ2VfY29weS9pbWFnZV9jb3B5LmpzCkBAIC0xMjAsMTYgKzEyMCwzMCBA
QCBleHBvcnQgY2xhc3MgSW1hZ2VDb3B5VGVzdCBleHRlbmRzIFZhbGlkYXRpb25UZXN0IHsKICAg
ICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBjYXNlICdDb3B5QjJUJzogewotICAgICAgICBj
b25zdCB7IGVuY29kZXIsIHZhbGlkYXRlRmluaXNoQW5kU3VibWl0IH0gPSB0aGlzLmNyZWF0ZUVu
Y29kZXIoJ25vbi1wYXNzJyk7CisgICAgICAgIGNvbnN0IHsgZW5jb2RlciwgdmFsaWRhdGVGaW5p
c2gsIHZhbGlkYXRlRmluaXNoQW5kU3VibWl0IH0gPSB0aGlzLmNyZWF0ZUVuY29kZXIoJ25vbi1w
YXNzJyk7CiAgICAgICAgIGVuY29kZXIuY29weUJ1ZmZlclRvVGV4dHVyZSh7IGJ1ZmZlciwgLi4u
dGV4dHVyZURhdGFMYXlvdXQgfSwgeyB0ZXh0dXJlIH0sIHNpemUpOwotICAgICAgICB2YWxpZGF0
ZUZpbmlzaEFuZFN1Ym1pdChzdWNjZXNzLCBzdWJtaXQpOworCisgICAgICAgIGlmIChzdWJtaXQp
IHsKKyAgICAgICAgICAvLyB2YWxpZGF0aW9uIGVycm9yIGlzIGV4cGVjdGVkIHRvIGNvbWUgZnJv
bSB0aGUgc3VibWl0IGFuZCBlbmNvZGluZyBzaG91bGQgc3VjY2VlZAorICAgICAgICAgIHZhbGlk
YXRlRmluaXNoQW5kU3VibWl0KHRydWUsIHN1Y2Nlc3MpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgIC8vIHZhbGlkYXRpb24gZXJyb3IgaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHRoZSBl
bmNvZGluZworICAgICAgICAgIHZhbGlkYXRlRmluaXNoKHN1Y2Nlc3MpOworICAgICAgICB9CiAK
ICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBjYXNlICdDb3B5VDJCJzogewotICAgICAg
ICBjb25zdCB7IGVuY29kZXIsIHZhbGlkYXRlRmluaXNoQW5kU3VibWl0IH0gPSB0aGlzLmNyZWF0
ZUVuY29kZXIoJ25vbi1wYXNzJyk7CisgICAgICAgIGNvbnN0IHsgZW5jb2RlciwgdmFsaWRhdGVG
aW5pc2gsIHZhbGlkYXRlRmluaXNoQW5kU3VibWl0IH0gPSB0aGlzLmNyZWF0ZUVuY29kZXIoJ25v
bi1wYXNzJyk7CiAgICAgICAgIGVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcih7IHRleHR1cmUg
fSwgeyBidWZmZXIsIC4uLnRleHR1cmVEYXRhTGF5b3V0IH0sIHNpemUpOwotICAgICAgICB2YWxp
ZGF0ZUZpbmlzaEFuZFN1Ym1pdChzdWNjZXNzLCBzdWJtaXQpOworCisgICAgICAgIGlmIChzdWJt
aXQpIHsKKyAgICAgICAgICAvLyB2YWxpZGF0aW9uIGVycm9yIGlzIGV4cGVjdGVkIHRvIGNvbWUg
ZnJvbSB0aGUgc3VibWl0IGFuZCBlbmNvZGluZyBzaG91bGQgc3VjY2VlZAorICAgICAgICAgIHZh
bGlkYXRlRmluaXNoQW5kU3VibWl0KHRydWUsIHN1Y2Nlc3MpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgIC8vIHZhbGlkYXRpb24gZXJyb3IgaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHRo
ZSBlbmNvZGluZworICAgICAgICAgIHZhbGlkYXRlRmluaXNoKHN1Y2Nlc3MpOworICAgICAgICB9
CiAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vaW1hZ2VfY29weS9sYXlvdXRfcmVs
YXRlZC5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92
YWxpZGF0aW9uL2ltYWdlX2NvcHkvbGF5b3V0X3JlbGF0ZWQuc3BlYy5qcwppbmRleCBjYTk5ZTU0
ZDJmZmQuLjY0NGQ4YzhhYjJiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2ltYWdlX2NvcHkvbGF5b3V0X3JlbGF0ZWQuc3Bl
Yy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlk
YXRpb24vaW1hZ2VfY29weS9sYXlvdXRfcmVsYXRlZC5zcGVjLmpzCkBAIC0xNDgsMTYgKzE0OCwx
NiBAQCBUZXN0IHRoZSBjb21wdXRhdGlvbiBvZiByZXF1aXJlZEJ5dGVzSW5Db3B5IGJ5IGNvbXB1
dGluZyB0aGUgbWluaW11bSBkYXRhIHNpemUgZgogICAgICAgICB7IGJ5dGVzUGVyUm93UGFkZGlu
ZzogMTUsIHJvd3NQZXJJbWFnZVBhZGRpbmdJbkJsb2NrczogMTcgfSwgLy8gYm90aCBwYWRkaW5n
cwogICAgICAgXSkKICAgICAgIC5jb21iaW5lV2l0aFBhcmFtcyhbCi0gICAgICAgIHsgY29weVdp
ZHRoSW5CbG9ja3M6IDMsIGNvcHlIZWlnaHRJbkJsb2NrczogNCwgY29weURlcHRoOiA1LCBvZmZz
ZXRJbkJsb2NrczogMCB9LCAvLyBzdGFuZGFyZCBjb3B5Ci0gICAgICAgIHsgY29weVdpZHRoSW5C
bG9ja3M6IDUsIGNvcHlIZWlnaHRJbkJsb2NrczogNCwgY29weURlcHRoOiAzLCBvZmZzZXRJbkJs
b2NrczogMTEgfSwgLy8gc3RhbmRhcmQgY29weSwgb2Zmc2V0ID4gMAotICAgICAgICB7IGNvcHlX
aWR0aEluQmxvY2tzOiAyNTYsIGNvcHlIZWlnaHRJbkJsb2NrczogMywgY29weURlcHRoOiAyLCBv
ZmZzZXRJbkJsb2NrczogMCB9LCAvLyBjb3B5V2lkdGggaXMgMjU2LWFsaWduZWQKLSAgICAgICAg
eyBjb3B5V2lkdGhJbkJsb2NrczogMCwgY29weUhlaWdodEluQmxvY2tzOiA0LCBjb3B5RGVwdGg6
IDUsIG9mZnNldEluQmxvY2tzOiAwIH0sIC8vIGVtcHR5IGNvcHkgYmVjYXVzZSBvZiB3aWR0aAot
ICAgICAgICB7IGNvcHlXaWR0aEluQmxvY2tzOiAzLCBjb3B5SGVpZ2h0SW5CbG9ja3M6IDAsIGNv
cHlEZXB0aDogNSwgb2Zmc2V0SW5CbG9ja3M6IDAgfSwgLy8gZW1wdHkgY29weSBiZWNhdXNlIG9m
IGhlaWdodAotICAgICAgICB7IGNvcHlXaWR0aEluQmxvY2tzOiAzLCBjb3B5SGVpZ2h0SW5CbG9j
a3M6IDQsIGNvcHlEZXB0aDogMCwgb2Zmc2V0SW5CbG9ja3M6IDEzIH0sIC8vIGVtcHR5IGNvcHkg
YmVjYXVzZSBvZiBkZXB0aCwgb2Zmc2V0ID4gMAotICAgICAgICB7IGNvcHlXaWR0aEluQmxvY2tz
OiAxLCBjb3B5SGVpZ2h0SW5CbG9ja3M6IDQsIGNvcHlEZXB0aDogNSwgb2Zmc2V0SW5CbG9ja3M6
IDAgfSwgLy8gY29weVdpZHRoID0gMQotICAgICAgICB7IGNvcHlXaWR0aEluQmxvY2tzOiAzLCBj
b3B5SGVpZ2h0SW5CbG9ja3M6IDEsIGNvcHlEZXB0aDogNSwgb2Zmc2V0SW5CbG9ja3M6IDE1IH0s
IC8vIGNvcHlIZWlnaHQgPSAxLCBvZmZzZXQgPiAwCi0gICAgICAgIHsgY29weVdpZHRoSW5CbG9j
a3M6IDUsIGNvcHlIZWlnaHRJbkJsb2NrczogNCwgY29weURlcHRoOiAxLCBvZmZzZXRJbkJsb2Nr
czogMCB9LCAvLyBjb3B5RGVwdGggPSAxCi0gICAgICAgIHsgY29weVdpZHRoSW5CbG9ja3M6IDcs
IGNvcHlIZWlnaHRJbkJsb2NrczogMSwgY29weURlcHRoOiAxLCBvZmZzZXRJbkJsb2NrczogMCB9
LCAvLyBjb3B5SGVpZ2h0ID0gMSBhbmQgY29weURlcHRoID0gMQorICAgICAgICB7IGNvcHlXaWR0
aEluQmxvY2tzOiAzLCBjb3B5SGVpZ2h0SW5CbG9ja3M6IDQsIGNvcHlEZXB0aDogNSwgX29mZnNl
dE11bHRpcGxpZXI6IDAgfSwgLy8gc3RhbmRhcmQgY29weQorICAgICAgICB7IGNvcHlXaWR0aElu
QmxvY2tzOiA1LCBjb3B5SGVpZ2h0SW5CbG9ja3M6IDQsIGNvcHlEZXB0aDogMywgX29mZnNldE11
bHRpcGxpZXI6IDExIH0sIC8vIHN0YW5kYXJkIGNvcHksIG9mZnNldCA+IDAKKyAgICAgICAgeyBj
b3B5V2lkdGhJbkJsb2NrczogMjU2LCBjb3B5SGVpZ2h0SW5CbG9ja3M6IDMsIGNvcHlEZXB0aDog
MiwgX29mZnNldE11bHRpcGxpZXI6IDAgfSwgLy8gY29weVdpZHRoIGlzIDI1Ni1hbGlnbmVkCisg
ICAgICAgIHsgY29weVdpZHRoSW5CbG9ja3M6IDAsIGNvcHlIZWlnaHRJbkJsb2NrczogNCwgY29w
eURlcHRoOiA1LCBfb2Zmc2V0TXVsdGlwbGllcjogMCB9LCAvLyBlbXB0eSBjb3B5IGJlY2F1c2Ug
b2Ygd2lkdGgKKyAgICAgICAgeyBjb3B5V2lkdGhJbkJsb2NrczogMywgY29weUhlaWdodEluQmxv
Y2tzOiAwLCBjb3B5RGVwdGg6IDUsIF9vZmZzZXRNdWx0aXBsaWVyOiAwIH0sIC8vIGVtcHR5IGNv
cHkgYmVjYXVzZSBvZiBoZWlnaHQKKyAgICAgICAgeyBjb3B5V2lkdGhJbkJsb2NrczogMywgY29w
eUhlaWdodEluQmxvY2tzOiA0LCBjb3B5RGVwdGg6IDAsIF9vZmZzZXRNdWx0aXBsaWVyOiAxMyB9
LCAvLyBlbXB0eSBjb3B5IGJlY2F1c2Ugb2YgZGVwdGgsIG9mZnNldCA+IDAKKyAgICAgICAgeyBj
b3B5V2lkdGhJbkJsb2NrczogMSwgY29weUhlaWdodEluQmxvY2tzOiA0LCBjb3B5RGVwdGg6IDUs
IF9vZmZzZXRNdWx0aXBsaWVyOiAwIH0sIC8vIGNvcHlXaWR0aCA9IDEKKyAgICAgICAgeyBjb3B5
V2lkdGhJbkJsb2NrczogMywgY29weUhlaWdodEluQmxvY2tzOiAxLCBjb3B5RGVwdGg6IDUsIF9v
ZmZzZXRNdWx0aXBsaWVyOiAxNSB9LCAvLyBjb3B5SGVpZ2h0ID0gMSwgb2Zmc2V0ID4gMAorICAg
ICAgICB7IGNvcHlXaWR0aEluQmxvY2tzOiA1LCBjb3B5SGVpZ2h0SW5CbG9ja3M6IDQsIGNvcHlE
ZXB0aDogMSwgX29mZnNldE11bHRpcGxpZXI6IDAgfSwgLy8gY29weURlcHRoID0gMQorICAgICAg
ICB7IGNvcHlXaWR0aEluQmxvY2tzOiA3LCBjb3B5SGVpZ2h0SW5CbG9ja3M6IDEsIGNvcHlEZXB0
aDogMSwgX29mZnNldE11bHRpcGxpZXI6IDAgfSwgLy8gY29weUhlaWdodCA9IDEgYW5kIGNvcHlE
ZXB0aCA9IDEKICAgICAgIF0pCiAgICAgICAvLyBUaGUgdGVzdCB0ZXh0dXJlIHNpemUgd2lsbCBi
ZSByb3VuZGVkIHVwIGZyb20gdGhlIGNvcHkgc2l6ZSB0byB0aGUgbmV4dCB2YWxpZCB0ZXh0dXJl
IHNpemUuCiAgICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIGEgZGVwdGgvc3RlbmNpbCBmb3JtYXQs
IGl0cyBjb3B5IHNpemUgbXVzdCBlcXVhbCB0byBzdWJyZXNvdXJjZSdzIHNpemUuCkBAIC0xNzAs
MTAgKzE3MCwxNyBAQCBUZXN0IHRoZSBjb21wdXRhdGlvbiBvZiByZXF1aXJlZEJ5dGVzSW5Db3B5
IGJ5IGNvbXB1dGluZyB0aGUgbWluaW11bSBkYXRhIHNpemUgZgogICAgICAgICApOwogICAgICAg
fSkKICAgICAgIC51bmxlc3MocCA9PiBwLmRpbWVuc2lvbiA9PT0gJzFkJyAmJiAocC5jb3B5SGVp
Z2h0SW5CbG9ja3MgPiAxIHx8IHAuY29weURlcHRoID4gMSkpCisgICAgICAuZXhwYW5kKCdidWZm
ZXJPZmZzZXQnLCBwID0+IHsKKyAgICAgICAgY29uc3QgaW5mbyA9IGtUZXh0dXJlRm9ybWF0SW5m
b1twLmZvcm1hdF07CisgICAgICAgIGlmIChpbmZvLmRlcHRoIHx8IGluZm8uc3RlbmNpbCkgewor
ICAgICAgICAgIHJldHVybiBbcC5fb2Zmc2V0TXVsdGlwbGllciAqIDRdOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBbcC5fb2Zmc2V0TXVsdGlwbGllciAqIGluZm8uYnl0ZXNQZXJCbG9ja107
CisgICAgICB9KQogICApCiAgIC5mbihhc3luYyB0ID0+IHsKICAgICBjb25zdCB7Ci0gICAgICBv
ZmZzZXRJbkJsb2NrcywKKyAgICAgIGJ1ZmZlck9mZnNldCwKICAgICAgIGJ5dGVzUGVyUm93UGFk
ZGluZywKICAgICAgIHJvd3NQZXJJbWFnZVBhZGRpbmdJbkJsb2NrcywKICAgICAgIGNvcHlXaWR0
aEluQmxvY2tzLApAQCAtMTkyLDI2ICsxOTksMjUgQEAgVGVzdCB0aGUgY29tcHV0YXRpb24gb2Yg
cmVxdWlyZWRCeXRlc0luQ29weSBieSBjb21wdXRpbmcgdGhlIG1pbmltdW0gZGF0YSBzaXplIGYK
ICAgICBjb25zdCBieXRlc1BlclJvd0FsaWdubWVudCA9IG1ldGhvZCA9PT0gJ1dyaXRlVGV4dHVy
ZScgPyAxIDogMjU2OwogICAgIGNvbnN0IGNvcHlXaWR0aCA9IGNvcHlXaWR0aEluQmxvY2tzICog
aW5mby5ibG9ja1dpZHRoOwogICAgIGNvbnN0IGNvcHlIZWlnaHQgPSBjb3B5SGVpZ2h0SW5CbG9j
a3MgKiBpbmZvLmJsb2NrSGVpZ2h0OwotICAgIGNvbnN0IG9mZnNldCA9IG9mZnNldEluQmxvY2tz
ICogaW5mby5ieXRlc1BlckJsb2NrOwogICAgIGNvbnN0IHJvd3NQZXJJbWFnZSA9IGNvcHlIZWln
aHQgKyByb3dzUGVySW1hZ2VQYWRkaW5nSW5CbG9ja3MgKiBpbmZvLmJsb2NrSGVpZ2h0OwogICAg
IGNvbnN0IGJ5dGVzUGVyUm93ID0KICAgICAgIGFsaWduKGJ5dGVzSW5BQ29tcGxldGVSb3coY29w
eVdpZHRoLCBmb3JtYXQpLCBieXRlc1BlclJvd0FsaWdubWVudCkgKwogICAgICAgYnl0ZXNQZXJS
b3dQYWRkaW5nICogYnl0ZXNQZXJSb3dBbGlnbm1lbnQ7CiAgICAgY29uc3QgY29weVNpemUgPSB7
IHdpZHRoOiBjb3B5V2lkdGgsIGhlaWdodDogY29weUhlaWdodCwgZGVwdGhPckFycmF5TGF5ZXJz
OiBjb3B5RGVwdGggfTsKIAotICAgIGNvbnN0IGxheW91dCA9IHsgb2Zmc2V0LCBieXRlc1BlclJv
dywgcm93c1BlckltYWdlIH07CisgICAgY29uc3QgbGF5b3V0ID0geyBidWZmZXJPZmZzZXQsIGJ5
dGVzUGVyUm93LCByb3dzUGVySW1hZ2UgfTsKICAgICBjb25zdCBtaW5EYXRhU2l6ZSA9IGRhdGFC
eXRlc0ZvckNvcHlPckZhaWwoeyBsYXlvdXQsIGZvcm1hdCwgY29weVNpemUsIG1ldGhvZCB9KTsK
IAogICAgIGNvbnN0IHRleHR1cmUgPSB0LmNyZWF0ZUFsaWduZWRUZXh0dXJlKGZvcm1hdCwgY29w
eVNpemUsIHVuZGVmaW5lZCwgZGltZW5zaW9uKTsKIAotICAgIHQudGVzdFJ1bih7IHRleHR1cmUg
fSwgeyBvZmZzZXQsIGJ5dGVzUGVyUm93LCByb3dzUGVySW1hZ2UgfSwgY29weVNpemUsIHsKKyAg
ICB0LnRlc3RSdW4oeyB0ZXh0dXJlIH0sIGxheW91dCwgY29weVNpemUsIHsKICAgICAgIGRhdGFT
aXplOiBtaW5EYXRhU2l6ZSwKICAgICAgIG1ldGhvZCwKICAgICAgIHN1Y2Nlc3M6IHRydWUsCiAg
ICAgfSk7CiAKICAgICBpZiAobWluRGF0YVNpemUgPiAwKSB7Ci0gICAgICB0LnRlc3RSdW4oeyB0
ZXh0dXJlIH0sIHsgb2Zmc2V0LCBieXRlc1BlclJvdywgcm93c1BlckltYWdlIH0sIGNvcHlTaXpl
LCB7CisgICAgICB0LnRlc3RSdW4oeyB0ZXh0dXJlIH0sIGxheW91dCwgY29weVNpemUsIHsKICAg
ICAgICAgZGF0YVNpemU6IG1pbkRhdGFTaXplIC0gMSwKICAgICAgICAgbWV0aG9kLAogICAgICAg
ICBzdWNjZXNzOiBmYWxzZSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9pbWFnZV9jb3B5L3RleHR1cmVfcmVsYXRlZC5zcGVj
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9u
L2ltYWdlX2NvcHkvdGV4dHVyZV9yZWxhdGVkLnNwZWMuanMKaW5kZXggOTU3MTViNzE3NzcwLi5h
ODkyZjk3ZTY2ZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvdmFsaWRhdGlvbi9pbWFnZV9jb3B5L3RleHR1cmVfcmVsYXRlZC5zcGVjLmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9p
bWFnZV9jb3B5L3RleHR1cmVfcmVsYXRlZC5zcGVjLmpzCkBAIC03MSwxNCArNzEsMjggQEAgZy50
ZXN0KCd0ZXh0dXJlLGRldmljZV9taXNtYXRjaCcpCiAgIC5wYXJhbXNTdWJjYXNlc09ubHkodSA9
PgogICAgIHUuY29tYmluZSgnbWV0aG9kJywga0ltYWdlQ29weVR5cGVzKS5jb21iaW5lKCdtaXNt
YXRjaGVkJywgW3RydWUsIGZhbHNlXSkKICAgKQotICAudW5pbXBsZW1lbnRlZCgpOworICAuZm4o
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyBtZXRob2QsIG1pc21hdGNoZWQgfSA9IHQucGFyYW1z
OwogCi1nLnRlc3QoJ2J1ZmZlcixkZXZpY2VfbWlzbWF0Y2gnKQotICAuZGVzYygnVGVzdHMgdGhl
IGltYWdlIGNvcGllcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBidWZmZXIgY3JlYXRlZCBmcm9t
IGFub3RoZXIgZGV2aWNlJykKLSAgLnBhcmFtc1N1YmNhc2VzT25seSh1ID0+Ci0gICAgdS5jb21i
aW5lKCdtZXRob2QnLCBbJ0NvcHlCMlQnLCAnQ29weVQyQiddKS5jb21iaW5lKCdtaXNtYXRjaGVk
JywgW3RydWUsIGZhbHNlXSkKLSAgKQotICAudW5pbXBsZW1lbnRlZCgpOworICAgIGlmIChtaXNt
YXRjaGVkKSB7CisgICAgICBhd2FpdCB0LnNlbGVjdE1pc21hdGNoZWREZXZpY2VPclNraXBUZXN0
Q2FzZSh1bmRlZmluZWQpOworICAgIH0KKworICAgIGNvbnN0IGRldmljZSA9IG1pc21hdGNoZWQg
PyB0Lm1pc21hdGNoZWREZXZpY2UgOiB0LmRldmljZTsKKworICAgIGNvbnN0IHRleHR1cmUgPSBk
ZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICBzaXplOiB7IHdpZHRoOiA0LCBoZWlnaHQ6IDQs
IGRlcHRoT3JBcnJheUxheWVyczogMSB9LAorICAgICAgZm9ybWF0OiAncmdiYTh1bm9ybScsCisg
ICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDIHwgR1BVVGV4dHVyZVVzYWdlLkNP
UFlfRFNULAorICAgIH0pOworCisgICAgdC50ZXN0UnVuKAorICAgICAgeyB0ZXh0dXJlIH0sCisg
ICAgICB7IGJ5dGVzUGVyUm93OiAwIH0sCisgICAgICB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAsIGRl
cHRoT3JBcnJheUxheWVyczogMCB9LAorICAgICAgeyBkYXRhU2l6ZTogMSwgbWV0aG9kLCBzdWNj
ZXNzOiAhbWlzbWF0Y2hlZCB9CisgICAgKTsKKyAgfSk7CiAKIGcudGVzdCgndXNhZ2UnKQogICAu
ZGVzYygKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvdmFsaWRhdGlvbi9xdWV1ZS9jb3B5VG9UZXh0dXJlL0NvcHlFeHRlcm5hbEltYWdlVG9UZXh0
dXJlLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3Zh
bGlkYXRpb24vcXVldWUvY29weVRvVGV4dHVyZS9Db3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZS5z
cGVjLmpzCmluZGV4IDJiNTQ0M2U1ZmZjZS4uODkwYzM0MmQzYTYxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vcXVldWUvY29w
eVRvVGV4dHVyZS9Db3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZS5zcGVjLmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9xdWV1ZS9jb3B5
VG9UZXh0dXJlL0NvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlLnNwZWMuanMKQEAgLTE0LDkgKzE0
LDExIEBAIGltcG9ydCB7CiB9IGZyb20gJy4uLy4uLy4uLy4uL2NhcGFiaWxpdHlfaW5mby5qcyc7
CiBpbXBvcnQgeyBrUmVzb3VyY2VTdGF0ZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9ncHVfdGVzdC5q
cyc7CiBpbXBvcnQgeworICBjYW5Db3B5RnJvbUNhbnZhc0NvbnRleHQsCiAgIGNyZWF0ZUNhbnZh
cywKICAgY3JlYXRlT25zY3JlZW5DYW52YXMsCiAgIGNyZWF0ZU9mZnNjcmVlbkNhbnZhcywKKyAg
a1ZhbGlkQ2FudmFzQ29udGV4dElkcywKIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9jcmVhdGVf
ZWxlbWVudHMuanMnOwogaW1wb3J0IHsgVmFsaWRhdGlvblRlc3QgfSBmcm9tICcuLi8uLi92YWxp
ZGF0aW9uX3Rlc3QuanMnOwogCkBAIC0yNiwxMSArMjgsNiBAQCBjb25zdCBrRGVmYXVsdEhlaWdo
dCA9IDMyOwogY29uc3Qga0RlZmF1bHREZXB0aCA9IDE7CiBjb25zdCBrRGVmYXVsdE1pcExldmVs
Q291bnQgPSA2OwogCi0vKiogVmFsaWQgY29udGV4dElkIGZvciBIVE1MQ2FudmFzRWxlbWVudC9P
ZmZzY3JlZW5DYW52YXMsCi0gKiAgc3BlYzogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2UvY2FudmFzLmh0bWwjZG9tLWNhbnZhcy1nZXRjb250ZXh0Ci0gKi8KLWV4cG9ydCBj
b25zdCBrVmFsaWRDb250ZXh0SWQgPSBbJzJkJywgJ2JpdG1hcHJlbmRlcmVyJywgJ3dlYmdsJywg
J3dlYmdsMicsICd3ZWJncHUnXTsKLQogZnVuY3Rpb24gY29tcHV0ZU1pcE1hcFNpemUod2lkdGgs
IGhlaWdodCwgbWlwTGV2ZWwpIHsKICAgcmV0dXJuIHsKICAgICBtaXBXaWR0aDogTWF0aC5tYXgo
d2lkdGggPj4gbWlwTGV2ZWwsIDEpLApAQCAtMTE4LDIwICsxMTUsMTIgQEAgZnVuY3Rpb24gZ2Vu
ZXJhdGVDb3B5U2l6ZUZvckRzdE9PQih7IG1pcExldmVsLCBkc3RPcmlnaW4gfSkgewogICBdOwog
fQogCi1mdW5jdGlvbiBjYW5Db3B5RnJvbUNvbnRleHRUeXBlKGNvbnRleHROYW1lKSB7Ci0gIHN3
aXRjaCAoY29udGV4dE5hbWUpIHsKLSAgICBjYXNlICcyZCc6Ci0gICAgY2FzZSAnd2ViZ2wnOgot
ICAgIGNhc2UgJ3dlYmdsMic6Ci0gICAgY2FzZSAnd2ViZ3B1JzoKLSAgICAgIHJldHVybiB0cnVl
OwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX0KLQogY2xhc3MgQ29w
eUV4dGVybmFsSW1hZ2VUb1RleHR1cmVUZXN0IGV4dGVuZHMgVmFsaWRhdGlvblRlc3QgewogICBn
ZXRJbWFnZURhdGEod2lkdGgsIGhlaWdodCkgeworICAgIGlmICh0eXBlb2YgSW1hZ2VEYXRhID09
PSAndW5kZWZpbmVkJykgeworICAgICAgdGhpcy5za2lwKCdJbWFnZURhdGEgaXMgbm90IHN1cHBv
cnRlZC4nKTsKKyAgICB9CisKICAgICBjb25zdCBwaXhlbFNpemUgPSBrRGVmYXVsdEJ5dGVzUGVy
UGl4ZWwgKiB3aWR0aCAqIGhlaWdodDsKICAgICBjb25zdCBpbWFnZVBpeGVscyA9IG5ldyBVaW50
OENsYW1wZWRBcnJheShwaXhlbFNpemUpOwogICAgIHJldHVybiBuZXcgSW1hZ2VEYXRhKGltYWdl
UGl4ZWxzLCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTE0Niw2ICsxMzUsMTMgQEAgY2xhc3MgQ29weUV4
dGVybmFsSW1hZ2VUb1RleHR1cmVUZXN0IGV4dGVuZHMgVmFsaWRhdGlvblRlc3QgewogICAgIHJl
dHVybiBjYW52YXM7CiAgIH0KIAorICBjcmVhdGVJbWFnZUJpdG1hcChpbWFnZSkgeworICAgIGlm
ICh0eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXAgPT09ICd1bmRlZmluZWQnKSB7CisgICAgICB0aGlz
LnNraXAoJ0NyZWF0aW5nIEltYWdlQml0bWFwcyBpcyBub3Qgc3VwcG9ydGVkLicpOworICAgIH0K
KyAgICByZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAoaW1hZ2UpOworICB9CisKICAgcnVuVGVzdChp
bWFnZUJpdG1hcENvcHlWaWV3LCB0ZXh0dXJlQ29weVZpZXcsIGNvcHlTaXplLCB2YWxpZGF0aW9u
U2NvcGVTdWNjZXNzLCBleGNlcHRpb25OYW1lKSB7CiAgICAgLy8gY29weUV4dGVybmFsSW1hZ2VU
b1RleHR1cmUgd2lsbCBnZW5lcmF0ZSB0d28gdHlwZXMgb2YgZXJyb3JzLiBPbmUgaXMgc3luY2hy
b25vdXMgZXhjZXB0aW9uczsKICAgICAvLyB0aGUgb3RoZXIgaXMgYXN5bmNocm9ub3VzIHZhbGlk
YXRpb24gZXJyb3Igc2NvcGUgZXJyb3JzLgpAQCAtMTg1LDcgKzE4MSw3IEBAIGcudGVzdCgnc291
cmNlX2NhbnZhcyxjb250ZXh0cycpCiAgICkKICAgLnBhcmFtcyh1ID0+CiAgICAgdSAvLwotICAg
ICAgLmNvbWJpbmUoJ2NvbnRleHRUeXBlJywga1ZhbGlkQ29udGV4dElkKQorICAgICAgLmNvbWJp
bmUoJ2NvbnRleHRUeXBlJywga1ZhbGlkQ2FudmFzQ29udGV4dElkcykKICAgICAgIC5iZWdpblN1
YmNhc2VzKCkKICAgICAgIC5jb21iaW5lKCdjb3B5U2l6ZScsIFsKICAgICAgICAgeyB3aWR0aDog
MCwgaGVpZ2h0OiAwLCBkZXB0aE9yQXJyYXlMYXllcnM6IDAgfSwKQEAgLTIxMyw3ICsyMDksNyBA
QCBnLnRlc3QoJ3NvdXJjZV9jYW52YXMsY29udGV4dHMnKQogICAgICAgeyB0ZXh0dXJlOiBkc3RU
ZXh0dXJlIH0sCiAgICAgICBjb3B5U2l6ZSwKICAgICAgIHRydWUsIC8vIE5vIHZhbGlkYXRpb24g
ZXJyb3JzLgotICAgICAgY2FuQ29weUZyb21Db250ZXh0VHlwZShjb250ZXh0VHlwZSkgPyAnJyA6
ICdPcGVyYXRpb25FcnJvcicKKyAgICAgIGNhbkNvcHlGcm9tQ2FudmFzQ29udGV4dChjb250ZXh0
VHlwZSkgPyAnJyA6ICdPcGVyYXRpb25FcnJvcicKICAgICApOwogICB9KTsKIApAQCAtMjMwLDcg
KzIyNiw3IEBAIGcudGVzdCgnc291cmNlX29mZnNjcmVlbkNhbnZhcyxjb250ZXh0cycpCiAgICkK
ICAgLnBhcmFtcyh1ID0+CiAgICAgdSAvLwotICAgICAgLmNvbWJpbmUoJ2NvbnRleHRUeXBlJywg
a1ZhbGlkQ29udGV4dElkKQorICAgICAgLmNvbWJpbmUoJ2NvbnRleHRUeXBlJywga1ZhbGlkQ2Fu
dmFzQ29udGV4dElkcykKICAgICAgIC5iZWdpblN1YmNhc2VzKCkKICAgICAgIC5jb21iaW5lKCdj
b3B5U2l6ZScsIFsKICAgICAgICAgeyB3aWR0aDogMCwgaGVpZ2h0OiAwLCBkZXB0aE9yQXJyYXlM
YXllcnM6IDAgfSwKQEAgLTI2MSw3ICsyNTcsNyBAQCBnLnRlc3QoJ3NvdXJjZV9vZmZzY3JlZW5D
YW52YXMsY29udGV4dHMnKQogICAgICAgeyB0ZXh0dXJlOiBkc3RUZXh0dXJlIH0sCiAgICAgICBj
b3B5U2l6ZSwKICAgICAgIHRydWUsIC8vIE5vIHZhbGlkYXRpb24gZXJyb3JzLgotICAgICAgY2Fu
Q29weUZyb21Db250ZXh0VHlwZShjb250ZXh0VHlwZSkgPyAnJyA6ICdPcGVyYXRpb25FcnJvcicK
KyAgICAgIGNhbkNvcHlGcm9tQ2FudmFzQ29udGV4dChjb250ZXh0VHlwZSkgPyAnJyA6ICdPcGVy
YXRpb25FcnJvcicKICAgICApOwogICB9KTsKIApAQCAtMjkyLDYgKzI4OCw5IEBAIGcudGVzdCgn
c291cmNlX2ltYWdlLGNyb3NzT3JpZ2luJykKICAgKQogICAuZm4oYXN5bmMgdCA9PiB7CiAgICAg
Y29uc3QgeyBzb3VyY2VJbWFnZSwgaXNPcmlnaW5DbGVhbiwgY29udGVudEZyb20sIGNvcHlTaXpl
IH0gPSB0LnBhcmFtczsKKyAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykg
eworICAgICAgdC5za2lwKCdET00gaXMgbm90IGF2YWlsYWJsZSB0byBjcmVhdGUgYW4gaW1hZ2Ug
ZWxlbWVudC4nKTsKKyAgICB9CiAKICAgICBjb25zdCBjcm9zc09yaWdpblVybCA9ICdodHRwczov
L2dldC53ZWJnbC5vcmcvY29uZm9ybWFuY2UtcmVzb3VyY2VzL29wZW5nbF9sb2dvLmpwZyc7CiAg
ICAgY29uc3Qgb3JpZ2luQ2xlYW5VcmwgPSBnZXRSZXNvdXJjZVBhdGgoJ0RpLTNkLnBuZycpOwpA
QCAtMzI1LDcgKzMyNCw3IEBAIGcudGVzdCgnc291cmNlX2ltYWdlLGNyb3NzT3JpZ2luJykKICAg
ICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBjYXNlICdpbWFnZUJpdG1hcCc6IHsKLSAgICAg
ICAgc291cmNlID0gYXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAoaW1nKTsKKyAgICAgICAgc291cmNl
ID0gYXdhaXQgdC5jcmVhdGVJbWFnZUJpdG1hcChpbWcpOwogICAgICAgICBicmVhazsKICAgICAg
IH0KICAgICAgIGNhc2UgJ2NhbnZhcyc6CkBAIC0zNDIsNyArMzQxLDcgQEAgZy50ZXN0KCdzb3Vy
Y2VfaW1hZ2UsY3Jvc3NPcmlnaW4nKQogICAgIGxldCBleHRlcm5hbEltYWdlOwogICAgIHN3aXRj
aCAoc291cmNlSW1hZ2UpIHsKICAgICAgIGNhc2UgJ2ltYWdlQml0bWFwJzogewotICAgICAgICBl
eHRlcm5hbEltYWdlID0gYXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAoc291cmNlKTsKKyAgICAgICAg
ZXh0ZXJuYWxJbWFnZSA9IGF3YWl0IHQuY3JlYXRlSW1hZ2VCaXRtYXAoc291cmNlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBjYXNlICdjYW52YXMnOgpAQCAtMzkzLDcgKzM5Miw3
IEBAIGcudGVzdCgnc291cmNlX2ltYWdlQml0bWFwLHN0YXRlJykKICAgKQogICAuZm4oYXN5bmMg
dCA9PiB7CiAgICAgY29uc3QgeyBjbG9zZWQsIGNvcHlTaXplIH0gPSB0LnBhcmFtczsKLSAgICBj
b25zdCBpbWFnZUJpdG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHQuZ2V0SW1hZ2VEYXRh
KDEsIDEpKTsKKyAgICBjb25zdCBpbWFnZUJpdG1hcCA9IGF3YWl0IHQuY3JlYXRlSW1hZ2VCaXRt
YXAodC5nZXRJbWFnZURhdGEoMSwgMSkpOwogICAgIGNvbnN0IGRzdFRleHR1cmUgPSB0LmRldmlj
ZS5jcmVhdGVUZXh0dXJlKHsKICAgICAgIHNpemU6IHsgd2lkdGg6IDEsIGhlaWdodDogMSwgZGVw
dGhPckFycmF5TGF5ZXJzOiAxIH0sCiAgICAgICBmb3JtYXQ6ICdiZ3JhOHVub3JtJywKQEAgLTU4
OSw3ICs1ODgsNyBAQCBnLnRlc3QoJ2Rlc3RpbmF0aW9uX3RleHR1cmUsc3RhdGUnKQogICApCiAg
IC5mbihhc3luYyB0ID0+IHsKICAgICBjb25zdCB7IHN0YXRlLCBjb3B5U2l6ZSB9ID0gdC5wYXJh
bXM7Ci0gICAgY29uc3QgaW1hZ2VCaXRtYXAgPSBhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcCh0Lmdl
dEltYWdlRGF0YSgxLCAxKSk7CisgICAgY29uc3QgaW1hZ2VCaXRtYXAgPSBhd2FpdCB0LmNyZWF0
ZUltYWdlQml0bWFwKHQuZ2V0SW1hZ2VEYXRhKDEsIDEpKTsKICAgICBjb25zdCBkc3RUZXh0dXJl
ID0gdC5jcmVhdGVUZXh0dXJlV2l0aFN0YXRlKHN0YXRlKTsKIAogICAgIHQucnVuVGVzdCh7IHNv
dXJjZTogaW1hZ2VCaXRtYXAgfSwgeyB0ZXh0dXJlOiBkc3RUZXh0dXJlIH0sIGNvcHlTaXplLCBz
dGF0ZSA9PT0gJ3ZhbGlkJyk7CkBAIC02MDAsNyArNTk5LDI2IEBAIGcudGVzdCgnZGVzdGluYXRp
b25fdGV4dHVyZSxkZXZpY2VfbWlzbWF0Y2gnKQogICAgICdUZXN0cyBjb3B5RXh0ZXJuYWxJbWFn
ZVRvVGV4dHVyZSBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGNy
ZWF0ZWQgZnJvbSBhbm90aGVyIGRldmljZScKICAgKQogICAucGFyYW1zU3ViY2FzZXNPbmx5KHUg
PT4gdS5jb21iaW5lKCdtaXNtYXRjaGVkJywgW3RydWUsIGZhbHNlXSkpCi0gIC51bmltcGxlbWVu
dGVkKCk7CisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IG1pc21hdGNoZWQgfSA9IHQu
cGFyYW1zOworCisgICAgaWYgKG1pc21hdGNoZWQpIHsKKyAgICAgIGF3YWl0IHQuc2VsZWN0TWlz
bWF0Y2hlZERldmljZU9yU2tpcFRlc3RDYXNlKHVuZGVmaW5lZCk7CisgICAgfQorCisgICAgY29u
c3QgZGV2aWNlID0gbWlzbWF0Y2hlZCA/IHQubWlzbWF0Y2hlZERldmljZSA6IHQuZGV2aWNlOwor
ICAgIGNvbnN0IGNvcHlTaXplID0geyB3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aE9yQXJyYXlM
YXllcnM6IDEgfTsKKworICAgIGNvbnN0IHRleHR1cmUgPSBkZXZpY2UuY3JlYXRlVGV4dHVyZSh7
CisgICAgICBzaXplOiBjb3B5U2l6ZSwKKyAgICAgIGZvcm1hdDogJ3JnYmE4dW5vcm0nLAorICAg
ICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVCB8IEdQVVRleHR1cmVVc2FnZS5SRU5E
RVJfQVRUQUNITUVOVCwKKyAgICB9KTsKKworICAgIGNvbnN0IGltYWdlQml0bWFwID0gYXdhaXQg
dC5jcmVhdGVJbWFnZUJpdG1hcCh0LmdldEltYWdlRGF0YSgxLCAxKSk7CisKKyAgICB0LnJ1blRl
c3QoeyBzb3VyY2U6IGltYWdlQml0bWFwIH0sIHsgdGV4dHVyZSB9LCBjb3B5U2l6ZSwgIW1pc21h
dGNoZWQpOworICB9KTsKIAogZy50ZXN0KCdkZXN0aW5hdGlvbl90ZXh0dXJlLGRpbWVuc2lvbicp
CiAgIC5kZXNjKApAQCAtNjIxLDcgKzYzOSw3IEBAIGcudGVzdCgnZGVzdGluYXRpb25fdGV4dHVy
ZSxkaW1lbnNpb24nKQogICApCiAgIC5mbihhc3luYyB0ID0+IHsKICAgICBjb25zdCB7IGRpbWVu
c2lvbiwgY29weVNpemUgfSA9IHQucGFyYW1zOwotICAgIGNvbnN0IGltYWdlQml0bWFwID0gYXdh
aXQgY3JlYXRlSW1hZ2VCaXRtYXAodC5nZXRJbWFnZURhdGEoMSwgMSkpOworICAgIGNvbnN0IGlt
YWdlQml0bWFwID0gYXdhaXQgdC5jcmVhdGVJbWFnZUJpdG1hcCh0LmdldEltYWdlRGF0YSgxLCAx
KSk7CiAgICAgY29uc3QgZHN0VGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewogICAg
ICAgc2l6ZTogeyB3aWR0aDogMSwgaGVpZ2h0OiAxLCBkZXB0aE9yQXJyYXlMYXllcnM6IDEgfSwK
ICAgICAgIGZvcm1hdDogJ3JnYmE4dW5vcm0nLApAQCAtNjUxLDcgKzY2OSw3IEBAIGcudGVzdCgn
ZGVzdGluYXRpb25fdGV4dHVyZSx1c2FnZScpCiAgICkKICAgLmZuKGFzeW5jIHQgPT4gewogICAg
IGNvbnN0IHsgdXNhZ2UsIGNvcHlTaXplIH0gPSB0LnBhcmFtczsKLSAgICBjb25zdCBpbWFnZUJp
dG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHQuZ2V0SW1hZ2VEYXRhKDEsIDEpKTsKKyAg
ICBjb25zdCBpbWFnZUJpdG1hcCA9IGF3YWl0IHQuY3JlYXRlSW1hZ2VCaXRtYXAodC5nZXRJbWFn
ZURhdGEoMSwgMSkpOwogICAgIGNvbnN0IGRzdFRleHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0
dXJlKHsKICAgICAgIHNpemU6IHsgd2lkdGg6IDEsIGhlaWdodDogMSwgZGVwdGhPckFycmF5TGF5
ZXJzOiAxIH0sCiAgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKQEAgLTY4NSw3ICs3MDMsNyBA
QCBnLnRlc3QoJ2Rlc3RpbmF0aW9uX3RleHR1cmUsc2FtcGxlX2NvdW50JykKICAgKQogICAuZm4o
YXN5bmMgdCA9PiB7CiAgICAgY29uc3QgeyBzYW1wbGVDb3VudCwgY29weVNpemUgfSA9IHQucGFy
YW1zOwotICAgIGNvbnN0IGltYWdlQml0bWFwID0gYXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAodC5n
ZXRJbWFnZURhdGEoMSwgMSkpOworICAgIGNvbnN0IGltYWdlQml0bWFwID0gYXdhaXQgdC5jcmVh
dGVJbWFnZUJpdG1hcCh0LmdldEltYWdlRGF0YSgxLCAxKSk7CiAgICAgY29uc3QgZHN0VGV4dHVy
ZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewogICAgICAgc2l6ZTogeyB3aWR0aDogMSwgaGVp
Z2h0OiAxLCBkZXB0aE9yQXJyYXlMYXllcnM6IDEgfSwKICAgICAgIHNhbXBsZUNvdW50LApAQCAt
NzE1LDcgKzczMyw3IEBAIGcudGVzdCgnZGVzdGluYXRpb25fdGV4dHVyZSxtaXBMZXZlbCcpCiAg
ICkKICAgLmZuKGFzeW5jIHQgPT4gewogICAgIGNvbnN0IHsgbWlwTGV2ZWwsIGNvcHlTaXplIH0g
PSB0LnBhcmFtczsKLSAgICBjb25zdCBpbWFnZUJpdG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0
bWFwKHQuZ2V0SW1hZ2VEYXRhKDEsIDEpKTsKKyAgICBjb25zdCBpbWFnZUJpdG1hcCA9IGF3YWl0
IHQuY3JlYXRlSW1hZ2VCaXRtYXAodC5nZXRJbWFnZURhdGEoMSwgMSkpOwogICAgIGNvbnN0IGRz
dFRleHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKICAgICAgIHNpemU6IHsgd2lkdGg6
IGtEZWZhdWx0V2lkdGgsIGhlaWdodDoga0RlZmF1bHRIZWlnaHQsIGRlcHRoT3JBcnJheUxheWVy
czoga0RlZmF1bHREZXB0aCB9LAogICAgICAgbWlwTGV2ZWxDb3VudDoga0RlZmF1bHRNaXBMZXZl
bENvdW50LApAQCAtNzUyLDcgKzc3MCw3IEBAIGcudGVzdCgnZGVzdGluYXRpb25fdGV4dHVyZSxm
b3JtYXQnKQogICAgIGNvbnN0IHsgZm9ybWF0LCBjb3B5U2l6ZSB9ID0gdC5wYXJhbXM7CiAgICAg
YXdhaXQgdC5zZWxlY3REZXZpY2VPclNraXBUZXN0Q2FzZShrVGV4dHVyZUZvcm1hdEluZm9bZm9y
bWF0XS5mZWF0dXJlKTsKIAotICAgIGNvbnN0IGltYWdlQml0bWFwID0gYXdhaXQgY3JlYXRlSW1h
Z2VCaXRtYXAodC5nZXRJbWFnZURhdGEoMSwgMSkpOworICAgIGNvbnN0IGltYWdlQml0bWFwID0g
YXdhaXQgdC5jcmVhdGVJbWFnZUJpdG1hcCh0LmdldEltYWdlRGF0YSgxLCAxKSk7CiAKICAgICAv
LyBjcmVhdGVUZXh0dXJlIHdpdGggYWxsIHBvc3NpYmxlIHRleHR1cmUgZm9ybWF0IG1heSBoYXZl
IHZhbGlkYXRpb24gZXJyb3Igd2hlbiB1c2luZwogICAgIC8vIGNvbXByZXNzZWQgdGV4dHVyZSBm
b3JtYXQuCkBAIC03OTIsNyArODEwLDcgQEAgZy50ZXN0KCdPT0Isc291cmNlJykKICAgKQogICAu
Zm4oYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgeyBzcmNPcmlnaW4sIGNvcHlTaXplIH0gPSB0LnBh
cmFtczsKLSAgICBjb25zdCBpbWFnZUJpdG1hcCA9IGF3YWl0IGNyZWF0ZUltYWdlQml0bWFwKHQu
Z2V0SW1hZ2VEYXRhKGtEZWZhdWx0V2lkdGgsIGtEZWZhdWx0SGVpZ2h0KSk7CisgICAgY29uc3Qg
aW1hZ2VCaXRtYXAgPSBhd2FpdCB0LmNyZWF0ZUltYWdlQml0bWFwKHQuZ2V0SW1hZ2VEYXRhKGtE
ZWZhdWx0V2lkdGgsIGtEZWZhdWx0SGVpZ2h0KSk7CiAgICAgY29uc3QgZHN0VGV4dHVyZSA9IHQu
ZGV2aWNlLmNyZWF0ZVRleHR1cmUoewogICAgICAgc2l6ZTogewogICAgICAgICB3aWR0aDoga0Rl
ZmF1bHRXaWR0aCArIDEsCkBAIC04NDIsNyArODYwLDcgQEAgZy50ZXN0KCdPT0IsZGVzdGluYXRp
b24nKQogICAuZm4oYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgeyBtaXBMZXZlbCwgZHN0T3JpZ2lu
LCBjb3B5U2l6ZSB9ID0gdC5wYXJhbXM7CiAKLSAgICBjb25zdCBpbWFnZUJpdG1hcCA9IGF3YWl0
IGNyZWF0ZUltYWdlQml0bWFwKAorICAgIGNvbnN0IGltYWdlQml0bWFwID0gYXdhaXQgdC5jcmVh
dGVJbWFnZUJpdG1hcCgKICAgICAgIHQuZ2V0SW1hZ2VEYXRhKGtEZWZhdWx0V2lkdGggKyAxLCBr
RGVmYXVsdEhlaWdodCArIDEpCiAgICAgKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3F1ZXVlL3N1Ym1pdC5zcGVjLmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3F1
ZXVlL3N1Ym1pdC5zcGVjLmpzCmluZGV4IDU2OTc5MmM2OWEzYi4uNjg3MWQ3YjdkOTE5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRp
b24vcXVldWUvc3VibWl0LnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3F1ZXVlL3N1Ym1pdC5zcGVjLmpzCkBAIC0yNSw0ICsy
NSwyNSBAQCBnLnRlc3QoJ2NvbW1hbmRfYnVmZmVyLGRldmljZV9taXNtYXRjaCcpCiAgICAgeyBj
YjBNaXNtYXRjaGVkOiB0cnVlLCBjYjFNaXNtYXRjaGVkOiBmYWxzZSB9LAogICAgIHsgY2IwTWlz
bWF0Y2hlZDogZmFsc2UsIGNiMU1pc21hdGNoZWQ6IHRydWUgfSwKICAgXSkKLSAgLnVuaW1wbGVt
ZW50ZWQoKTsKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgY2IwTWlzbWF0Y2hlZCwg
Y2IxTWlzbWF0Y2hlZCB9ID0gdC5wYXJhbXM7CisgICAgY29uc3QgbWlzbWF0Y2hlZCA9IGNiME1p
c21hdGNoZWQgfHwgY2IxTWlzbWF0Y2hlZDsKKworICAgIGlmIChtaXNtYXRjaGVkKSB7CisgICAg
ICBhd2FpdCB0LnNlbGVjdE1pc21hdGNoZWREZXZpY2VPclNraXBUZXN0Q2FzZSh1bmRlZmluZWQp
OworICAgIH0KKworICAgIGNvbnN0IGVuY29kZXIwID0gY2IwTWlzbWF0Y2hlZAorICAgICAgPyB0
Lm1pc21hdGNoZWREZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKQorICAgICAgOiB0LmRldmlj
ZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNvbnN0IGNiMCA9IGVuY29kZXIwLmZpbmlz
aCgpOworCisgICAgY29uc3QgZW5jb2RlcjEgPSBjYjFNaXNtYXRjaGVkCisgICAgICA/IHQubWlz
bWF0Y2hlZERldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpCisgICAgICA6IHQuZGV2aWNlLmNy
ZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CisgICAgY29uc3QgY2IxID0gZW5jb2RlcjEuZmluaXNoKCk7
CisKKyAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7CisgICAgICB0LmRldmljZS5x
dWV1ZS5zdWJtaXQoW2NiMCwgY2IxXSk7CisgICAgfSwgbWlzbWF0Y2hlZCk7CisgIH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0
aW9uL3F1ZXVlL3dyaXRlQnVmZmVyLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vcXVldWUvd3JpdGVCdWZmZXIuc3BlYy5qcwppbmRl
eCA0NjI2YzY3NDM3MzUuLjkxNzU1ZDljMzQyMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3F1ZXVlL3dyaXRlQnVmZmVyLnNw
ZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxp
ZGF0aW9uL3F1ZXVlL3dyaXRlQnVmZmVyLnNwZWMuanMKQEAgLTMsMTYgKzMsNDIgQEAKICAqKi8g
ZXhwb3J0IGNvbnN0IGRlc2NyaXB0aW9uID0gYAogVGVzdHMgd3JpdGVCdWZmZXIgdmFsaWRhdGlv
bi4KIAotTm90ZTogZGVzdHJveWVkIGJ1ZmZlciBpcyB0ZXN0ZWQgaW4gZGVzdHJveWVkLy4KIE5v
dGU6IGJ1ZmZlciBtYXAgc3RhdGUgaXMgdGVzdGVkIGluIC4vYnVmZmVyX21hcHBlZC5zcGVjLnRz
LgogYDsKIGltcG9ydCB7IG1ha2VUZXN0R3JvdXAgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24v
ZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnOwotCitpbXBvcnQgeyBrVHlwZWRBcnJheUJ1ZmZlclZp
ZXdDb25zdHJ1Y3RvcnMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsK
IGltcG9ydCB7IEdQVUNvbnN0IH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzLmpzJzsKK2ltcG9y
dCB7IGtSZXNvdXJjZVN0YXRlcyB9IGZyb20gJy4uLy4uLy4uL2dwdV90ZXN0LmpzJzsKIGltcG9y
dCB7IFZhbGlkYXRpb25UZXN0IH0gZnJvbSAnLi4vdmFsaWRhdGlvbl90ZXN0LmpzJzsKIAogZXhw
b3J0IGNvbnN0IGcgPSBtYWtlVGVzdEdyb3VwKFZhbGlkYXRpb25UZXN0KTsKIAorZy50ZXN0KCdi
dWZmZXJfc3RhdGUnKQorICAuZGVzYygKKyAgICBgCitUZXN0IHRoYXQgdGhlIGJ1ZmZlciB1c2Vk
IGZvciBHUFVRdWV1ZS53cml0ZUJ1ZmZlcigpIG11c3QgYmUgdmFsaWQuIFRlc3RzIGNhbGxpbmcg
d3JpdGVCdWZmZXIKK3dpdGgge3ZhbGlkLCBpbnZhbGlkLCBkZXN0cm95ZWR9IGJ1ZmZlci4KKyAg
YAorICApCisgIC5wYXJhbXModSA9PgorICAgIHUgLy8KKyAgICAgIC5jb21iaW5lKCdidWZmZXJT
dGF0ZScsIGtSZXNvdXJjZVN0YXRlcykKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29u
c3QgeyBidWZmZXJTdGF0ZSB9ID0gdC5wYXJhbXM7CisgICAgY29uc3QgYnVmZmVyID0gdC5jcmVh
dGVCdWZmZXJXaXRoU3RhdGUoYnVmZmVyU3RhdGUsIHsKKyAgICAgIHNpemU6IDE2LAorICAgICAg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNULAorICAgIH0pOworCisgICAgY29uc3QgZGF0
YSA9IG5ldyBVaW50OEFycmF5KDE2KTsKKyAgICBjb25zdCBfdmFsaWQgPSBidWZmZXJTdGF0ZSA9
PT0gJ3ZhbGlkJzsKKworICAgIHQuZXhwZWN0VmFsaWRhdGlvbkVycm9yKCgpID0+IHsKKyAgICAg
IHQuZGV2aWNlLnF1ZXVlLndyaXRlQnVmZmVyKGJ1ZmZlciwgMCwgZGF0YSwgMCwgZGF0YS5sZW5n
dGgpOworICAgIH0sICFfdmFsaWQpOworICB9KTsKKwogZy50ZXN0KCdyYW5nZXMnKQogICAuZGVz
YygKICAgICBgCkBAIC03MSw3ICs5Nyw3IEBAIEFsc28gdmVyaWZpZXMgdGhhdCB0aGUgc3BlY2lm
aWVkIGRhdGEgcmFuZ2U6CiAgICAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiBxdWV1
ZS53cml0ZUJ1ZmZlcihidWZmZXIsIDgsIGFycmF5TWQpKTsKIAogICAgICAgLy8gV3JpdGluZyB0
aGUgZnVsbCBidWZmZXIgd2l0aCBhIHVuYWxpZ25lZCBvZmZzZXQuCi0gICAgICB0LnNob3VsZFRo
cm93KCdPcGVyYXRpb25FcnJvcicsICgpID0+IHF1ZXVlLndyaXRlQnVmZmVyKGJ1ZmZlciwgMywg
YXJyYXlTbSkpOworICAgICAgdC5leHBlY3RWYWxpZGF0aW9uRXJyb3IoKCkgPT4gcXVldWUud3Jp
dGVCdWZmZXIoYnVmZmVyLCAzLCBhcnJheVNtKSk7CiAKICAgICAgIC8vIFdyaXRpbmcgcmVtYWlu
ZGVyIG9mIGJ1ZmZlciBmcm9tIG9mZnNldC4KICAgICAgIHF1ZXVlLndyaXRlQnVmZmVyKGJ1ZmZl
ciwgMCwgYXJyYXlTbSwgNCk7CkBAIC0xMDgsMjEgKzEzNCw5IEBAIEFsc28gdmVyaWZpZXMgdGhh
dCB0aGUgc3BlY2lmaWVkIGRhdGEgcmFuZ2U6CiAgICAgICB0LnNob3VsZFRocm93KCdPcGVyYXRp
b25FcnJvcicsICgpID0+IHF1ZXVlLndyaXRlQnVmZmVyKGJ1ZmZlciwgMCwgYXJyYXlTbSwgdW5k
ZWZpbmVkLCAxMikpOwogICAgIH0KIAotICAgIGNvbnN0IGFycmF5VHlwZXMgPSBbCi0gICAgICBV
aW50OEFycmF5LAotICAgICAgVWludDhDbGFtcGVkQXJyYXksCi0gICAgICBJbnQ4QXJyYXksCi0g
ICAgICBVaW50MTZBcnJheSwKLSAgICAgIEludDE2QXJyYXksCi0gICAgICBVaW50MzJBcnJheSwK
LSAgICAgIEludDMyQXJyYXksCi0gICAgICBGbG9hdDMyQXJyYXksCi0gICAgICBGbG9hdDY0QXJy
YXksCi0gICAgXTsKLQogICAgIHJ1blRlc3QoVWludDhBcnJheSwgdHJ1ZSk7CiAKLSAgICBmb3Ig
KGNvbnN0IGFycmF5VHlwZSBvZiBhcnJheVR5cGVzKSB7CisgICAgZm9yIChjb25zdCBhcnJheVR5
cGUgb2Yga1R5cGVkQXJyYXlCdWZmZXJWaWV3Q29uc3RydWN0b3JzKSB7CiAgICAgICBydW5UZXN0
KGFycmF5VHlwZSwgZmFsc2UpOwogICAgIH0KICAgfSk7CkBAIC0xNTMsNCArMTY3LDI1IEBAIFRl
c3RzIGNhbGxpbmcgd3JpdGVCdWZmZXIgd2l0aCB0aGUgYnVmZmVyIG1pc3NlZCBDT1BZX0RTVCB1
c2FnZS4KIGcudGVzdCgnYnVmZmVyLGRldmljZV9taXNtYXRjaCcpCiAgIC5kZXNjKCdUZXN0cyB3
cml0ZUJ1ZmZlciBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBidWZmZXIgY3JlYXRlZCBmcm9tIGFu
b3RoZXIgZGV2aWNlJykKICAgLnBhcmFtc1N1YmNhc2VzT25seSh1ID0+IHUuY29tYmluZSgnbWlz
bWF0Y2hlZCcsIFt0cnVlLCBmYWxzZV0pKQotICAudW5pbXBsZW1lbnRlZCgpOworICAuZm4oYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgeyBtaXNtYXRjaGVkIH0gPSB0LnBhcmFtczsKKworICAgIGlm
IChtaXNtYXRjaGVkKSB7CisgICAgICBhd2FpdCB0LnNlbGVjdE1pc21hdGNoZWREZXZpY2VPclNr
aXBUZXN0Q2FzZSh1bmRlZmluZWQpOworICAgIH0KKworICAgIGNvbnN0IGRldmljZSA9IG1pc21h
dGNoZWQgPyB0Lm1pc21hdGNoZWREZXZpY2UgOiB0LmRldmljZTsKKworICAgIGNvbnN0IGJ1ZmZl
ciA9IGRldmljZS5jcmVhdGVCdWZmZXIoeworICAgICAgc2l6ZTogMTYsCisgICAgICB1c2FnZTog
R1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1QsCisgICAgfSk7CisKKyAgICB0LnRyYWNrRm9yQ2xlYW51
cChidWZmZXIpOworCisgICAgY29uc3QgZGF0YSA9IG5ldyBVaW50OEFycmF5KDE2KTsKKworICAg
IHQuZXhwZWN0VmFsaWRhdGlvbkVycm9yKCgpID0+IHsKKyAgICAgIHQuZGV2aWNlLnF1ZXVlLndy
aXRlQnVmZmVyKGJ1ZmZlciwgMCwgZGF0YSwgMCwgZGF0YS5sZW5ndGgpOworICAgIH0sIG1pc21h
dGNoZWQpOworICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9yZW5kZXJfcGFzc19kZXNjcmlwdG9yLnNwZWMuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vcmVuZGVy
X3Bhc3NfZGVzY3JpcHRvci5zcGVjLmpzCmluZGV4IDgwMDM2Y2JmOTQ4MS4uZTcxNDI5OWFhNGUz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3Zh
bGlkYXRpb24vcmVuZGVyX3Bhc3NfZGVzY3JpcHRvci5zcGVjLmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9yZW5kZXJfcGFzc19kZXNj
cmlwdG9yLnNwZWMuanMKQEAgLTcsNyArNywxMSBAQCBUT0RPOiBwZXItdGVzdCBkZXNjcmlwdGlv
bnMsIG1ha2UgdGVzdCBuYW1lcyBtb3JlIHN1Y2NpbmN0CiBUT0RPOiByZXZpZXcgZm9yIGNvbXBs
ZXRlbmVzcwogYDsKIGltcG9ydCB7IG1ha2VUZXN0R3JvdXAgfSBmcm9tICcuLi8uLi8uLi9jb21t
b24vZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnOwotaW1wb3J0IHsga1JlbmRlcmFibGVDb2xvclRl
eHR1cmVGb3JtYXRzLCBrVGV4dHVyZUZvcm1hdEluZm8gfSBmcm9tICcuLi8uLi9jYXBhYmlsaXR5
X2luZm8uanMnOworaW1wb3J0IHsKKyAga0RlcHRoU3RlbmNpbEZvcm1hdHMsCisgIGtSZW5kZXJh
YmxlQ29sb3JUZXh0dXJlRm9ybWF0cywKKyAga1RleHR1cmVGb3JtYXRJbmZvLAorfSBmcm9tICcu
Li8uLi9jYXBhYmlsaXR5X2luZm8uanMnOwogCiBpbXBvcnQgeyBWYWxpZGF0aW9uVGVzdCB9IGZy
b20gJy4vdmFsaWRhdGlvbl90ZXN0LmpzJzsKIApAQCAtNTc3LDYgKzU4MSw3NCBAQCBnLnRlc3Qo
J2NoZWNrX2RlcHRoX3N0ZW5jaWxfYXR0YWNobWVudF9zYW1wbGVfY291bnRzX21pc21hdGNoJyku
Zm4oYXN5bmMgdCA9PiB7CiAgIH0KIH0pOwogCitnLnRlc3QoJ2RlcHRoX3N0ZW5jaWxfYXR0YWNo
bWVudCcpCisgIC5kZXNjKAorICAgIGAKKyAgVGVzdCBHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudCBVc2FnZToKKyAgLSBkZXB0aFJlYWRPbmx5IGFuZCBzdGVuY2lsUmVhZE9ubHkg
bXVzdCBtYXRjaCBpZiB0aGUgZm9ybWF0IGlzIGEgY29tYmluZWQgZGVwdGgtc3RlbmNpbCBmb3Jt
YXQuCisgIC0gZGVwdGhMb2FkT3AgYW5kIGRlcHRoU3RvcmVPcCBtdXN0IGJlIHByb3ZpZGVkIGlm
ZiB0aGUgZm9ybWF0IGhhcyBhIGRlcHRoIGFzcGVjdCBhbmQgZGVwdGhSZWFkT25seSBpcyBub3Qg
dHJ1ZS4KKyAgLSBzdGVuY2lsTG9hZE9wIGFuZCBzdGVuY2lsU3RvcmVPcCBtdXN0IGJlIHByb3Zp
ZGVkIGlmZiB0aGUgZm9ybWF0IGhhcyBhIHN0ZW5jaWwgYXNwZWN0IGFuZCBzdGVuY2lsUmVhZE9u
bHkgaXMgbm90IHRydWUuCisgIGAKKyAgKQorICAucGFyYW1zU3ViY2FzZXNPbmx5KHUgPT4KKyAg
ICB1IC8vCisgICAgICAuY29tYmluZSgnZm9ybWF0Jywga0RlcHRoU3RlbmNpbEZvcm1hdHMpCisg
ICAgICAuY29tYmluZSgnZGVwdGhSZWFkT25seScsIFtmYWxzZSwgdHJ1ZV0pCisgICAgICAuY29t
YmluZSgnc3RlbmNpbFJlYWRPbmx5JywgW2ZhbHNlLCB0cnVlXSkKKyAgICAgIC5jb21iaW5lKCdz
ZXREZXB0aExvYWRTdG9yZU9wJywgW2ZhbHNlLCB0cnVlXSkKKyAgICAgIC5jb21iaW5lKCdzZXRT
dGVuY2lsTG9hZFN0b3JlT3AnLCBbZmFsc2UsIHRydWVdKQorICApCisgIC5mbihhc3luYyB0ID0+
IHsKKyAgICBjb25zdCB7CisgICAgICBmb3JtYXQsCisgICAgICBkZXB0aFJlYWRPbmx5LAorICAg
ICAgc3RlbmNpbFJlYWRPbmx5LAorICAgICAgc2V0RGVwdGhMb2FkU3RvcmVPcCwKKyAgICAgIHNl
dFN0ZW5jaWxMb2FkU3RvcmVPcCwKKyAgICB9ID0gdC5wYXJhbXM7CisgICAgYXdhaXQgdC5zZWxl
Y3REZXZpY2VGb3JUZXh0dXJlRm9ybWF0T3JTa2lwVGVzdENhc2UoZm9ybWF0KTsKKworICAgIGxl
dCBpc1ZhbGlkID0gdHJ1ZTsKKyAgICBjb25zdCBpbmZvID0ga1RleHR1cmVGb3JtYXRJbmZvW2Zv
cm1hdF07CisgICAgaWYgKGluZm8uZGVwdGggJiYgaW5mby5zdGVuY2lsKSB7CisgICAgICBpc1Zh
bGlkICYmPSBkZXB0aFJlYWRPbmx5ID09PSBzdGVuY2lsUmVhZE9ubHk7CisgICAgfQorCisgICAg
aWYgKGluZm8uZGVwdGggJiYgIWRlcHRoUmVhZE9ubHkpIHsKKyAgICAgIGlzVmFsaWQgJiY9IHNl
dERlcHRoTG9hZFN0b3JlT3A7CisgICAgfSBlbHNlIHsKKyAgICAgIGlzVmFsaWQgJiY9ICFzZXRE
ZXB0aExvYWRTdG9yZU9wOworICAgIH0KKworICAgIGlmIChpbmZvLnN0ZW5jaWwgJiYgIXN0ZW5j
aWxSZWFkT25seSkgeworICAgICAgaXNWYWxpZCAmJj0gc2V0U3RlbmNpbExvYWRTdG9yZU9wOwor
ICAgIH0gZWxzZSB7CisgICAgICBpc1ZhbGlkICYmPSAhc2V0U3RlbmNpbExvYWRTdG9yZU9wOwor
ICAgIH0KKworICAgIGNvbnN0IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSB7CisgICAgICB2aWV3
OiB0LmNyZWF0ZVRleHR1cmUoeyBmb3JtYXQgfSkuY3JlYXRlVmlldygpLAorICAgICAgZGVwdGhS
ZWFkT25seSwKKyAgICAgIHN0ZW5jaWxSZWFkT25seSwKKyAgICB9OworCisgICAgaWYgKHNldERl
cHRoTG9hZFN0b3JlT3ApIHsKKyAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZGVwdGhMb2Fk
T3AgPSAnY2xlYXInOworICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aFN0b3JlT3Ag
PSAnc3RvcmUnOworICAgIH0KKyAgICBpZiAoc2V0U3RlbmNpbExvYWRTdG9yZU9wKSB7CisgICAg
ICBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxMb2FkT3AgPSAnY2xlYXInOworICAgICAg
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsU3RvcmVPcCA9ICdzdG9yZSc7CisgICAgfQor
CisgICAgY29uc3QgZGVzY3JpcHRvciA9IHsKKyAgICAgIGNvbG9yQXR0YWNobWVudHM6IFt0Lmdl
dENvbG9yQXR0YWNobWVudCh0LmNyZWF0ZVRleHR1cmUoKSldLAorICAgICAgZGVwdGhTdGVuY2ls
QXR0YWNobWVudCwKKyAgICB9OworCisgICAgdC50cnlSZW5kZXJQYXNzKGlzVmFsaWQsIGRlc2Ny
aXB0b3IpOworICB9KTsKKwogZy50ZXN0KCdtdWx0aXNhbXBsZV9yZW5kZXJfdGFyZ2V0X2Zvcm1h
dHNfc3VwcG9ydF9yZXNvbHZlJykKICAgLnBhcmFtcyh1ID0+CiAgICAgdQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3Jlc291
cmNlX3VzYWdlcy90ZXh0dXJlL2luX3Bhc3NfZW5jb2Rlci5zcGVjLmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3Jlc291cmNlX3VzYWdlcy90
ZXh0dXJlL2luX3Bhc3NfZW5jb2Rlci5zcGVjLmpzCmluZGV4IGM3YzA0M2ZjYmM5NS4uZjIyMjM2
NTEwZTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
YXBpL3ZhbGlkYXRpb24vcmVzb3VyY2VfdXNhZ2VzL3RleHR1cmUvaW5fcGFzc19lbmNvZGVyLnNw
ZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxp
ZGF0aW9uL3Jlc291cmNlX3VzYWdlcy90ZXh0dXJlL2luX3Bhc3NfZW5jb2Rlci5zcGVjLmpzCkBA
IC00OCw2ICs0OCw3IEBAIGltcG9ydCB7IHBwIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9u
L3V0aWwvcHJlcHJvY2Vzc29yLmpzJzsKIGltcG9ydCB7IGFzc2VydCB9IGZyb20gJy4uLy4uLy4u
Ly4uLy4uL2NvbW1vbi91dGlsL3V0aWwuanMnOwogaW1wb3J0IHsKICAga0RlcHRoU3RlbmNpbEZv
cm1hdHMsCisgIGtEZXB0aFN0ZW5jaWxGb3JtYXRSZXNvbHZlZEFzcGVjdCwKICAga1RleHR1cmVG
b3JtYXRJbmZvLAogICBrU2hhZGVyU3RhZ2VzLAogfSBmcm9tICcuLi8uLi8uLi8uLi9jYXBhYmls
aXR5X2luZm8uanMnOwpAQCAtNjI0LDEwICs2MjUsMTQgQEAgZy50ZXN0KCdzdWJyZXNvdXJjZXNf
YW5kX2JpbmRpbmdfdHlwZXNfY29tYmluYXRpb25fZm9yX2FzcGVjdCcpCiAgICAgICBhc3BlY3Q6
IGFzcGVjdDEsCiAgICAgfSk7CiAKKyAgICBjb25zdCB2aWV3MVJlc29sdmVkRm9ybWF0ID0ga0Rl
cHRoU3RlbmNpbEZvcm1hdFJlc29sdmVkQXNwZWN0W2Zvcm1hdF1bYXNwZWN0MV07CisgICAgY29u
c3QgdmlldzFIYXNEZXB0aCA9IGtUZXh0dXJlRm9ybWF0SW5mb1t2aWV3MVJlc29sdmVkRm9ybWF0
XS5kZXB0aDsKKyAgICBjb25zdCB2aWV3MUhhc1N0ZW5jaWwgPSBrVGV4dHVyZUZvcm1hdEluZm9b
dmlldzFSZXNvbHZlZEZvcm1hdF0uc3RlbmNpbDsKKwogICAgIGNvbnN0IGVuY29kZXIgPSB0LmRl
dmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOwogICAgIC8vIENvbG9yIGF0dGFjaG1lbnQncyBz
aXplIHNob3VsZCBtYXRjaCBkZXB0aC9zdGVuY2lsIGF0dGFjaG1lbnQncyBzaXplLiBOb3RlIHRo
YXQgaWYKICAgICAvLyB0eXBlMSAhPT0gJ3JlbmRlci10YXJnZXQnIHRoZW4gdGhlcmUncyBubyBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50IHRvIG1hdGNoIGFueXdheS4KLSAgICBjb25zdCBkZXB0aFN0
ZW5jaWxGb3JtYXQgPSB0eXBlMSA9PT0gJ3JlbmRlci10YXJnZXQnID8gZm9ybWF0IDogdW5kZWZp
bmVkOworICAgIGNvbnN0IGRlcHRoU3RlbmNpbEZvcm1hdCA9IHR5cGUxID09PSAncmVuZGVyLXRh
cmdldCcgPyB2aWV3MVJlc29sdmVkRm9ybWF0IDogdW5kZWZpbmVkOwogCiAgICAgY29uc3Qgc2l6
ZSA9IFNJWkUgPj4gYmFzZUxldmVsOwogICAgIGNvbnN0IHBhc3MgPSBjb21wdXRlCkBAIC02NDUs
MTIgKzY1MCwxMCBAQCBnLnRlc3QoJ3N1YnJlc291cmNlc19hbmRfYmluZGluZ190eXBlc19jb21i
aW5hdGlvbl9mb3JfYXNwZWN0JykKICAgICAgICAgICBkZXB0aFN0ZW5jaWxBdHRhY2htZW50OiBk
ZXB0aFN0ZW5jaWxGb3JtYXQKICAgICAgICAgICAgID8gewogICAgICAgICAgICAgICAgIHZpZXc6
IHZpZXcxLAotICAgICAgICAgICAgICAgIGRlcHRoU3RvcmVPcDoga1RleHR1cmVGb3JtYXRJbmZv
W2RlcHRoU3RlbmNpbEZvcm1hdF0uZGVwdGggPyAnZGlzY2FyZCcgOiB1bmRlZmluZWQsCi0gICAg
ICAgICAgICAgICAgZGVwdGhMb2FkT3A6IGtUZXh0dXJlRm9ybWF0SW5mb1tkZXB0aFN0ZW5jaWxG
b3JtYXRdLmRlcHRoID8gJ2xvYWQnIDogdW5kZWZpbmVkLAotICAgICAgICAgICAgICAgIHN0ZW5j
aWxTdG9yZU9wOiBrVGV4dHVyZUZvcm1hdEluZm9bZGVwdGhTdGVuY2lsRm9ybWF0XS5zdGVuY2ls
Ci0gICAgICAgICAgICAgICAgICA/ICdkaXNjYXJkJwotICAgICAgICAgICAgICAgICAgOiB1bmRl
ZmluZWQsCi0gICAgICAgICAgICAgICAgc3RlbmNpbExvYWRPcDoga1RleHR1cmVGb3JtYXRJbmZv
W2RlcHRoU3RlbmNpbEZvcm1hdF0uc3RlbmNpbCA/ICdsb2FkJyA6IHVuZGVmaW5lZCwKKyAgICAg
ICAgICAgICAgICBkZXB0aFN0b3JlT3A6IHZpZXcxSGFzRGVwdGggPyAnZGlzY2FyZCcgOiB1bmRl
ZmluZWQsCisgICAgICAgICAgICAgICAgZGVwdGhMb2FkT3A6IHZpZXcxSGFzRGVwdGggPyAnbG9h
ZCcgOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgc3RlbmNpbFN0b3JlT3A6IHZpZXcxSGFz
U3RlbmNpbCA/ICdkaXNjYXJkJyA6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICBzdGVuY2ls
TG9hZE9wOiB2aWV3MUhhc1N0ZW5jaWwgPyAnbG9hZCcgOiB1bmRlZmluZWQsCiAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIDogdW5kZWZpbmVkLAogICAgICAgICB9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9yZXNv
dXJjZV91c2FnZXMvdGV4dHVyZS9pbl9yZW5kZXJfY29tbW9uLnNwZWMuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vcmVzb3VyY2VfdXNhZ2Vz
L3RleHR1cmUvaW5fcmVuZGVyX2NvbW1vbi5zcGVjLmpzCmluZGV4IDY2ODVmY2ZlZDkxOC4uZDAw
YWNjNTFjMDc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvYXBpL3ZhbGlkYXRpb24vcmVzb3VyY2VfdXNhZ2VzL3RleHR1cmUvaW5fcmVuZGVyX2NvbW1v
bi5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkv
dmFsaWRhdGlvbi9yZXNvdXJjZV91c2FnZXMvdGV4dHVyZS9pbl9yZW5kZXJfY29tbW9uLnNwZWMu
anMKQEAgLTEsMjUgKzEsMTAgQEAKIC8qKgogICogQVVUTy1HRU5FUkFURUQgLSBETyBOT1QgRURJ
VC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cwogICoqLyBleHBvcnQgY29u
c3QgZGVzY3JpcHRpb24gPSBgCi1UT0RPOgotLSAyIHZpZXdzOgotICAgIC0geD0ge3Vwb24gdGhl
IHNhbWUgc3VicmVzb3VyY2UsIG9yIGRpZmZlcmVudCBzdWJyZXNvdXJjZXMge21pcCBsZXZlbCwg
YXJyYXkgbGF5ZXIsIGFzcGVjdH0gb2YKLSAgICAgICAgIHRoZSBzYW1lIHRleHR1cmV9Ci0gICAg
LSB4PSBwb3NzaWJsZSByZXNvdXJjZSB1c2FnZXMgb24gZWFjaCB2aWV3OgotICAgICAgICAgLSBi
b3RoIGluIGJpbmQgZ3JvdXAge3RleHR1cmVfYmluZGluZywgc3RvcmFnZV9iaW5kaW5nfQotICAg
IC0geD0gZGlmZmVyZW50IHNoYWRlciBzdGFnZXM6IHswLCAuLi4sIDd9Ci0gICAgICAgIC0gbWF5
YmUgZmlyc3QgdmlldyB2aXMgPSB7MSwgMiwgNH0sIHNlY29uZCB2aWV3IHZpcyA9IHswLCAuLi4s
IDd9Ci0gICAgLSB4PSBiaW5kaW5ncyBhcmUgaW4gewotICAgICAgICAtIHNhbWUgZHJhdyBjYWxs
Ci0gICAgICAgIC0gc2FtZSBwYXNzLCBkaWZmZXJlbnQgZHJhdyBjYWxsCi0gICAgICAgIC0gZGlm
ZmVyZW50IHBhc3MKLSAgICAgICAgLSB9Ci0oSXQncyBwcm9iYWJseSBub3QgbmVjZXNzYXJ5IHRv
IHRlc3QgRVZFUlkgcG9zc2libGUgY29tYmluYXRpb24gb2Ygb3B0aW9ucyBpbiB0aGlzIHdob2xl
Ci1ibG9jaywgc28gd2UgY291bGQgYnJlYWsgaXQgZG93biBpbnRvIGEgZmV3IHNtYWxsZXIgb25l
cyAob25lIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YKLXN1YnJlc291cmNlcywgb25lIGZvciBzYW1l
IGRyYXcvc2FtZSBwYXNzL2RpZmZlcmVudCBwYXNzLCBvbmUgZm9yIHZpc2liaWxpdGllcykuKQor
VGV4dHVyZSBVc2FnZXMgVmFsaWRhdGlvbiBUZXN0cyBpbiBTYW1lIG9yIERpZmZlcmVudCBSZW5k
ZXIgUGFzcyBFbmNvZGVycy4KIGA7CiBpbXBvcnQgeyBtYWtlVGVzdEdyb3VwIH0gZnJvbSAnLi4v
Li4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay90ZXN0X2dyb3VwLmpzJzsKLWltcG9ydCB7IHVu
cmVhY2hhYmxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uL3V0aWwvdXRpbC5qcyc7Citp
bXBvcnQgeyBhc3NlcnQsIHVucmVhY2hhYmxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9u
L3V0aWwvdXRpbC5qcyc7CiBpbXBvcnQgeyBWYWxpZGF0aW9uVGVzdCB9IGZyb20gJy4uLy4uL3Zh
bGlkYXRpb25fdGVzdC5qcyc7CiAKIGNsYXNzIEYgZXh0ZW5kcyBWYWxpZGF0aW9uVGVzdCB7CkBA
IC0zMyw2ICsxOCw0NyBAQCBjbGFzcyBGIGV4dGVuZHMgVmFsaWRhdGlvblRlc3QgewogICAgICAg
c3RvcmVPcDogJ3N0b3JlJywKICAgICB9OwogICB9CisKKyAgY3JlYXRlQmluZEdyb3VwRm9yVGVz
dCh0ZXh0dXJlVmlldywgdGV4dHVyZVVzYWdlLCBzYW1wbGVUeXBlKSB7CisgICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RW50cnkgPSB7CisgICAgICBiaW5kaW5nOiAwLAorICAgICAgdmlzaWJpbGl0
eTogR1BVU2hhZGVyU3RhZ2UuRlJBR01FTlQsCisgICAgfTsKKworICAgIHN3aXRjaCAodGV4dHVy
ZVVzYWdlKSB7CisgICAgICBjYXNlICd0ZXh0dXJlJzoKKyAgICAgICAgYmluZEdyb3VwTGF5b3V0
RW50cnkudGV4dHVyZSA9IHsgdmlld0RpbWVuc2lvbjogJzJkLWFycmF5Jywgc2FtcGxlVHlwZSB9
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgJ3N0b3JhZ2UnOgorICAgICAgICBiaW5kR3Jv
dXBMYXlvdXRFbnRyeS5zdG9yYWdlVGV4dHVyZSA9IHsKKyAgICAgICAgICBhY2Nlc3M6ICd3cml0
ZS1vbmx5JywKKyAgICAgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICAgICAgICB2aWV3
RGltZW5zaW9uOiAnMmQtYXJyYXknLAorICAgICAgICB9OworCisgICAgICAgIGJyZWFrOworICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgdW5yZWFjaGFibGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgY29uc3QgbGF5b3V0ID0gdGhpcy5kZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0
KHsKKyAgICAgIGVudHJpZXM6IFtiaW5kR3JvdXBMYXlvdXRFbnRyeV0sCisgICAgfSk7CisKKyAg
ICByZXR1cm4gdGhpcy5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAgICAgIGxheW91dCwKKyAg
ICAgIGVudHJpZXM6IFt7IGJpbmRpbmc6IDAsIHJlc291cmNlOiB0ZXh0dXJlVmlldyB9XSwKKyAg
ICB9KTsKKyAgfQorCisgIGlzUmFuZ2VOb3RPdmVybGFwcGVkKHN0YXJ0MCwgZW5kMCwgc3RhcnQx
LCBlbmQxKSB7CisgICAgYXNzZXJ0KHN0YXJ0MCA8PSBlbmQwICYmIHN0YXJ0MSA8PSBlbmQxKTsK
KyAgICAvLyBUaGVyZSBhcmUgb25seSB0d28gcG9zc2liaWxpdGllcyBmb3IgdHdvIG5vbi1vdmVy
bGFwcGVkIHJhbmdlczoKKyAgICAvLyBbc3RhcnQwLCBlbmQwXSBbc3RhcnQxLCBlbmQxXSBvcgor
ICAgIC8vIFtzdGFydDEsIGVuZDFdIFtzdGFydDAsIGVuZDBdCisgICAgcmV0dXJuIGVuZDAgPCBz
dGFydDEgfHwgZW5kMSA8IHN0YXJ0MDsKKyAgfQogfQogCiBleHBvcnQgY29uc3QgZyA9IG1ha2VU
ZXN0R3JvdXAoRik7CkBAIC00MSw3ICs2Nyw3IEBAIGNvbnN0IGtUZXh0dXJlU2l6ZSA9IDE2Owog
Y29uc3Qga1RleHR1cmVMZXZlbHMgPSAzOwogY29uc3Qga1RleHR1cmVMYXllcnMgPSAzOwogCi1n
LnRlc3QoJ3N1YnJlc291cmNlc19mcm9tX3NhbWVfdGV4dHVyZV9hc19jb2xvcl9hdHRhY2htZW50
cycpCitnLnRlc3QoJ3N1YnJlc291cmNlcyxjb2xvcl9hdHRhY2htZW50cycpCiAgIC5kZXNjKAog
ICAgIGAKICAgVGVzdCB0aGF0IHRoZSBkaWZmZXJlbnQgc3VicmVzb3VyY2Ugb2YgdGhlIHNhbWUg
dGV4dHVyZSBhcmUgYWxsb3dlZCB0byBiZSB1c2VkIGFzIGNvbG9yCkBAIC01MCwxNSArNzYsMTUg
QEAgZy50ZXN0KCdzdWJyZXNvdXJjZXNfZnJvbV9zYW1lX3RleHR1cmVfYXNfY29sb3JfYXR0YWNo
bWVudHMnKQogICApCiAgIC5wYXJhbXModSA9PgogICAgIHUKLSAgICAgIC5jb21iaW5lKCdiYXNl
TGF5ZXIwJywgWzAsIDFdKQotICAgICAgLmNvbWJpbmUoJ2Jhc2VMZXZlbDAnLCBbMCwgMV0pCi0g
ICAgICAuY29tYmluZSgnYmFzZUxheWVyMScsIFswLCAxXSkKLSAgICAgIC5jb21iaW5lKCdiYXNl
TGV2ZWwxJywgWzAsIDFdKQorICAgICAgLmNvbWJpbmUoJ2xheWVyMCcsIFswLCAxXSkKKyAgICAg
IC5jb21iaW5lKCdsZXZlbDAnLCBbMCwgMV0pCisgICAgICAuY29tYmluZSgnbGF5ZXIxJywgWzAs
IDFdKQorICAgICAgLmNvbWJpbmUoJ2xldmVsMScsIFswLCAxXSkKICAgICAgIC5jb21iaW5lKCdp
blNhbWVQYXNzJywgW3RydWUsIGZhbHNlXSkKLSAgICAgIC51bmxlc3ModCA9PiB0LmluU2FtZVBh
c3MgJiYgdC5iYXNlTGV2ZWwwICE9PSB0LmJhc2VMZXZlbDEpCisgICAgICAudW5sZXNzKHQgPT4g
dC5pblNhbWVQYXNzICYmIHQubGV2ZWwwICE9PSB0LmxldmVsMSkKICAgKQogICAuZm4oYXN5bmMg
dCA9PiB7Ci0gICAgY29uc3QgeyBiYXNlTGF5ZXIwLCBiYXNlTGV2ZWwwLCBiYXNlTGF5ZXIxLCBi
YXNlTGV2ZWwxLCBpblNhbWVQYXNzIH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCB7IGxheWVyMCwg
bGV2ZWwwLCBsYXllcjEsIGxldmVsMSwgaW5TYW1lUGFzcyB9ID0gdC5wYXJhbXM7CiAKICAgICBj
b25zdCB0ZXh0dXJlID0gdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CiAgICAgICBmb3JtYXQ6ICdy
Z2JhOHVub3JtJywKQEAgLTY4LDE1ICs5NCwxNSBAQCBnLnRlc3QoJ3N1YnJlc291cmNlc19mcm9t
X3NhbWVfdGV4dHVyZV9hc19jb2xvcl9hdHRhY2htZW50cycpCiAgICAgfSk7CiAKICAgICBjb25z
dCBjb2xvckF0dGFjaG1lbnQxID0gdC5nZXRDb2xvckF0dGFjaG1lbnQodGV4dHVyZSwgewotICAg
ICAgYmFzZUFycmF5TGF5ZXI6IGJhc2VMYXllcjAsCisgICAgICBiYXNlQXJyYXlMYXllcjogbGF5
ZXIwLAogICAgICAgYXJyYXlMYXllckNvdW50OiAxLAotICAgICAgYmFzZU1pcExldmVsOiBiYXNl
TGV2ZWwwLAorICAgICAgYmFzZU1pcExldmVsOiBsZXZlbDAsCiAgICAgICBtaXBMZXZlbENvdW50
OiAxLAogICAgIH0pOwogCiAgICAgY29uc3QgY29sb3JBdHRhY2htZW50MiA9IHQuZ2V0Q29sb3JB
dHRhY2htZW50KHRleHR1cmUsIHsKLSAgICAgIGJhc2VBcnJheUxheWVyOiBiYXNlTGF5ZXIxLAot
ICAgICAgYmFzZU1pcExldmVsOiBiYXNlTGV2ZWwxLAorICAgICAgYmFzZUFycmF5TGF5ZXI6IGxh
eWVyMSwKKyAgICAgIGJhc2VNaXBMZXZlbDogbGV2ZWwxLAogICAgICAgbWlwTGV2ZWxDb3VudDog
MSwKICAgICB9KTsKIApAQCAtMTAwLDEzICsxMjYsMTMgQEAgZy50ZXN0KCdzdWJyZXNvdXJjZXNf
ZnJvbV9zYW1lX3RleHR1cmVfYXNfY29sb3JfYXR0YWNobWVudHMnKQogICAgICAgcmVuZGVyUGFz
czIuZW5kKCk7CiAgICAgfQogCi0gICAgY29uc3Qgc3VjY2VzcyA9IGluU2FtZVBhc3MgPyBiYXNl
TGF5ZXIwICE9PSBiYXNlTGF5ZXIxIDogdHJ1ZTsKKyAgICBjb25zdCBzdWNjZXNzID0gaW5TYW1l
UGFzcyA/IGxheWVyMCAhPT0gbGF5ZXIxIDogdHJ1ZTsKICAgICB0LmV4cGVjdFZhbGlkYXRpb25F
cnJvcigoKSA9PiB7CiAgICAgICBlbmNvZGVyLmZpbmlzaCgpOwogICAgIH0sICFzdWNjZXNzKTsK
ICAgfSk7CiAKLWcudGVzdCgnc3VicmVzb3VyY2VzX2Zyb21fc2FtZV90ZXh0dXJlX2FzX2NvbG9y
X2F0dGFjaG1lbnRfYW5kX2luX2JpbmRfZ3JvdXAnKQorZy50ZXN0KCdzdWJyZXNvdXJjZXMsY29s
b3JfYXR0YWNobWVudF9hbmRfYmluZF9ncm91cCcpCiAgIC5kZXNjKAogICAgIGAKICAgVGVzdCB0
aGF0IHdoZW4gb25lIHN1YnJlc291cmNlIG9mIGEgdGV4dHVyZSBpcyB1c2VkIGFzIGEgY29sb3Ig
YXR0YWNobWVudCwgaXQgY2Fubm90IGJlIHVzZWQgaW4gYQpAQCAtMTE4LDgwICsxNDQsNTAgQEAg
Zy50ZXN0KCdzdWJyZXNvdXJjZXNfZnJvbV9zYW1lX3RleHR1cmVfYXNfY29sb3JfYXR0YWNobWVu
dF9hbmRfaW5fYmluZF9ncm91cCcpCiAgICAgICAuY29tYmluZSgnY29sb3JBdHRhY2htZW50TGV2
ZWwnLCBbMCwgMV0pCiAgICAgICAuY29tYmluZSgnY29sb3JBdHRhY2htZW50TGF5ZXInLCBbMCwg
MV0pCiAgICAgICAuY29tYmluZVdpdGhQYXJhbXMoWwotICAgICAgICB7IGJpbmRHcm91cFZpZXdC
YXNlTGV2ZWw6IDAsIGJpbmRHcm91cFZpZXdMZXZlbENvdW50OiAxIH0sCi0gICAgICAgIHsgYmlu
ZEdyb3VwVmlld0Jhc2VMZXZlbDogMSwgYmluZEdyb3VwVmlld0xldmVsQ291bnQ6IDEgfSwKLSAg
ICAgICAgeyBiaW5kR3JvdXBWaWV3QmFzZUxldmVsOiAxLCBiaW5kR3JvdXBWaWV3TGV2ZWxDb3Vu
dDogMiB9LAorICAgICAgICB7IGJnTGV2ZWw6IDAsIGJnTGV2ZWxDb3VudDogMSB9LAorICAgICAg
ICB7IGJnTGV2ZWw6IDEsIGJnTGV2ZWxDb3VudDogMSB9LAorICAgICAgICB7IGJnTGV2ZWw6IDEs
IGJnTGV2ZWxDb3VudDogMiB9LAogICAgICAgXSkKICAgICAgIC5jb21iaW5lV2l0aFBhcmFtcyhb
Ci0gICAgICAgIHsgYmluZEdyb3VwVmlld0Jhc2VMYXllcjogMCwgYmluZEdyb3VwVmlld0xheWVy
Q291bnQ6IDEgfSwKLSAgICAgICAgeyBiaW5kR3JvdXBWaWV3QmFzZUxheWVyOiAxLCBiaW5kR3Jv
dXBWaWV3TGF5ZXJDb3VudDogMSB9LAotICAgICAgICB7IGJpbmRHcm91cFZpZXdCYXNlTGF5ZXI6
IDEsIGJpbmRHcm91cFZpZXdMYXllckNvdW50OiAyIH0sCisgICAgICAgIHsgYmdMYXllcjogMCwg
YmdMYXllckNvdW50OiAxIH0sCisgICAgICAgIHsgYmdMYXllcjogMSwgYmdMYXllckNvdW50OiAx
IH0sCisgICAgICAgIHsgYmdMYXllcjogMSwgYmdMYXllckNvdW50OiAyIH0sCiAgICAgICBdKQot
ICAgICAgLmNvbWJpbmUoJ2JpbmRHcm91cFVzYWdlJywgWyd0ZXh0dXJlJywgJ3N0b3JhZ2UnXSkK
LSAgICAgIC51bmxlc3ModCA9PiB0LmJpbmRHcm91cFVzYWdlID09PSAnc3RvcmFnZScgJiYgdC5i
aW5kR3JvdXBWaWV3TGV2ZWxDb3VudCA+IDApCisgICAgICAuY29tYmluZSgnYmdVc2FnZScsIFsn
dGV4dHVyZScsICdzdG9yYWdlJ10pCisgICAgICAudW5sZXNzKHQgPT4gdC5iZ1VzYWdlID09PSAn
c3RvcmFnZScgJiYgdC5iZ0xldmVsQ291bnQgPiAxKQogICAgICAgLmNvbWJpbmUoJ2luU2FtZVBh
c3MnLCBbdHJ1ZSwgZmFsc2VdKQogICApCiAgIC5mbihhc3luYyB0ID0+IHsKICAgICBjb25zdCB7
CiAgICAgICBjb2xvckF0dGFjaG1lbnRMZXZlbCwKICAgICAgIGNvbG9yQXR0YWNobWVudExheWVy
LAotICAgICAgYmluZEdyb3VwVmlld0Jhc2VMZXZlbCwKLSAgICAgIGJpbmRHcm91cFZpZXdMZXZl
bENvdW50LAotICAgICAgYmluZEdyb3VwVmlld0Jhc2VMYXllciwKLSAgICAgIGJpbmRHcm91cFZp
ZXdMYXllckNvdW50LAotICAgICAgYmluZEdyb3VwVXNhZ2UsCisgICAgICBiZ0xldmVsLAorICAg
ICAgYmdMZXZlbENvdW50LAorICAgICAgYmdMYXllciwKKyAgICAgIGJnTGF5ZXJDb3VudCwKKyAg
ICAgIGJnVXNhZ2UsCiAgICAgICBpblNhbWVQYXNzLAogICAgIH0gPSB0LnBhcmFtczsKIAotICAg
IGNvbnN0IGJpbmRHcm91cExheW91dEVudHJ5ID0gewotICAgICAgYmluZGluZzogMCwKLSAgICAg
IHZpc2liaWxpdHk6IEdQVVNoYWRlclN0YWdlLkZSQUdNRU5ULAotICAgIH07Ci0KLSAgICBsZXQg
dGV4dHVyZVVzYWdlID0gR1BVVGV4dHVyZVVzYWdlLlJFTkRFUl9BVFRBQ0hNRU5UOwotICAgIGNv
bnN0IHZpZXdEaW1lbnNpb24gPSBiaW5kR3JvdXBWaWV3TGF5ZXJDb3VudCA+IDEgPyAnMmQtYXJy
YXknIDogJzJkJzsKLSAgICBzd2l0Y2ggKGJpbmRHcm91cFVzYWdlKSB7Ci0gICAgICBjYXNlICd0
ZXh0dXJlJzoKLSAgICAgICAgYmluZEdyb3VwTGF5b3V0RW50cnkudGV4dHVyZSA9IHsgdmlld0Rp
bWVuc2lvbiB9OwotICAgICAgICB0ZXh0dXJlVXNhZ2UgfD0gR1BVVGV4dHVyZVVzYWdlLlRFWFRV
UkVfQklORElORzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdzdG9yYWdlJzoKLSAgICAg
ICAgYmluZEdyb3VwTGF5b3V0RW50cnkuc3RvcmFnZVRleHR1cmUgPSB7Ci0gICAgICAgICAgYWNj
ZXNzOiAnd3JpdGUtb25seScsCi0gICAgICAgICAgZm9ybWF0OiAncmdiYTh1bm9ybScsCi0gICAg
ICAgICAgdmlld0RpbWVuc2lvbiwKLSAgICAgICAgfTsKLQotICAgICAgICB0ZXh0dXJlVXNhZ2Ug
fD0gR1BVVGV4dHVyZVVzYWdlLlNUT1JBR0VfQklORElORzsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBkZWZhdWx0OgotICAgICAgICB1bnJlYWNoYWJsZSgpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0KICAgICBjb25zdCB0ZXh0dXJlID0gdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CiAgICAgICBm
b3JtYXQ6ICdyZ2JhOHVub3JtJywKLSAgICAgIHVzYWdlOiB0ZXh0dXJlVXNhZ2UsCisgICAgICB1
c2FnZToKKyAgICAgICAgR1BVVGV4dHVyZVVzYWdlLlJFTkRFUl9BVFRBQ0hNRU5UIHwKKyAgICAg
ICAgR1BVVGV4dHVyZVVzYWdlLlRFWFRVUkVfQklORElORyB8CisgICAgICAgIEdQVVRleHR1cmVV
c2FnZS5TVE9SQUdFX0JJTkRJTkcsCiAgICAgICBzaXplOiBba1RleHR1cmVTaXplLCBrVGV4dHVy
ZVNpemUsIGtUZXh0dXJlTGF5ZXJzXSwKICAgICAgIG1pcExldmVsQ291bnQ6IGtUZXh0dXJlTGV2
ZWxzLAogICAgIH0pOwogCiAgICAgY29uc3QgYmluZEdyb3VwVmlldyA9IHRleHR1cmUuY3JlYXRl
Vmlldyh7Ci0gICAgICBkaW1lbnNpb246IGJpbmRHcm91cFZpZXdMYXllckNvdW50ID4gMSA/ICcy
ZC1hcnJheScgOiAnMmQnLAotICAgICAgYmFzZUFycmF5TGF5ZXI6IGJpbmRHcm91cFZpZXdCYXNl
TGF5ZXIsCi0gICAgICBhcnJheUxheWVyQ291bnQ6IGJpbmRHcm91cFZpZXdMYXllckNvdW50LAot
ICAgICAgYmFzZU1pcExldmVsOiBiaW5kR3JvdXBWaWV3QmFzZUxldmVsLAotICAgICAgbWlwTGV2
ZWxDb3VudDogYmluZEdyb3VwVmlld0xldmVsQ291bnQsCisgICAgICBkaW1lbnNpb246ICcyZC1h
cnJheScsCisgICAgICBiYXNlQXJyYXlMYXllcjogYmdMYXllciwKKyAgICAgIGFycmF5TGF5ZXJD
b3VudDogYmdMYXllckNvdW50LAorICAgICAgYmFzZU1pcExldmVsOiBiZ0xldmVsLAorICAgICAg
bWlwTGV2ZWxDb3VudDogYmdMZXZlbENvdW50LAogICAgIH0pOwogCi0gICAgY29uc3QgYmluZEdy
b3VwTGF5b3V0ID0gdC5kZXZpY2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKLSAgICAgIGVudHJp
ZXM6IFtiaW5kR3JvdXBMYXlvdXRFbnRyeV0sCi0gICAgfSk7Ci0KLSAgICBjb25zdCBiaW5kR3Jv
dXAgPSB0LmRldmljZS5jcmVhdGVCaW5kR3JvdXAoewotICAgICAgbGF5b3V0OiBiaW5kR3JvdXBM
YXlvdXQsCi0gICAgICBlbnRyaWVzOiBbeyBiaW5kaW5nOiAwLCByZXNvdXJjZTogYmluZEdyb3Vw
VmlldyB9XSwKLSAgICB9KTsKKyAgICBjb25zdCBiaW5kR3JvdXAgPSB0LmNyZWF0ZUJpbmRHcm91
cEZvclRlc3QoYmluZEdyb3VwVmlldywgYmdVc2FnZSwgJ2Zsb2F0Jyk7CiAKICAgICBjb25zdCBj
b2xvckF0dGFjaG1lbnQgPSB0LmdldENvbG9yQXR0YWNobWVudCh0ZXh0dXJlLCB7CiAgICAgICBi
YXNlQXJyYXlMYXllcjogY29sb3JBdHRhY2htZW50TGF5ZXIsCkBAIC0yMjcsMTYgKzIyMywzNzcg
QEAgZy50ZXN0KCdzdWJyZXNvdXJjZXNfZnJvbV9zYW1lX3RleHR1cmVfYXNfY29sb3JfYXR0YWNo
bWVudF9hbmRfaW5fYmluZF9ncm91cCcpCiAgICAgICByZW5kZXJQYXNzMi5lbmQoKTsKICAgICB9
CiAKLSAgICBjb25zdCBpc01pcExldmVsT3ZlcmxhcHBlZCA9Ci0gICAgICBjb2xvckF0dGFjaG1l
bnRMZXZlbCA+PSBiaW5kR3JvdXBWaWV3QmFzZUxldmVsICYmCi0gICAgICBjb2xvckF0dGFjaG1l
bnRMZXZlbCA8IGJpbmRHcm91cFZpZXdCYXNlTGV2ZWwgKyBiaW5kR3JvdXBWaWV3TGV2ZWxDb3Vu
dDsKLSAgICBjb25zdCBpc0FycmF5TGF5ZXJPdmVybGFwcGVkID0KLSAgICAgIGNvbG9yQXR0YWNo
bWVudExheWVyID49IGJpbmRHcm91cFZpZXdCYXNlTGF5ZXIgJiYKLSAgICAgIGNvbG9yQXR0YWNo
bWVudExheWVyIDwgYmluZEdyb3VwVmlld0Jhc2VMYXllciArIGJpbmRHcm91cFZpZXdMYXllckNv
dW50OwotICAgIGNvbnN0IGlzT3ZlcmxhcHBlZCA9IGlzTWlwTGV2ZWxPdmVybGFwcGVkICYmIGlz
QXJyYXlMYXllck92ZXJsYXBwZWQ7CisgICAgY29uc3QgaXNNaXBMZXZlbE5vdE92ZXJsYXBwZWQg
PSB0LmlzUmFuZ2VOb3RPdmVybGFwcGVkKAorICAgICAgY29sb3JBdHRhY2htZW50TGV2ZWwsCisg
ICAgICBjb2xvckF0dGFjaG1lbnRMZXZlbCwKKyAgICAgIGJnTGV2ZWwsCisgICAgICBiZ0xldmVs
ICsgYmdMZXZlbENvdW50IC0gMQorICAgICk7CiAKLSAgICBjb25zdCBzdWNjZXNzID0gaW5TYW1l
UGFzcyA/ICFpc092ZXJsYXBwZWQgOiB0cnVlOworICAgIGNvbnN0IGlzQXJyYXlMYXllck5vdE92
ZXJsYXBwZWQgPSB0LmlzUmFuZ2VOb3RPdmVybGFwcGVkKAorICAgICAgY29sb3JBdHRhY2htZW50
TGF5ZXIsCisgICAgICBjb2xvckF0dGFjaG1lbnRMYXllciwKKyAgICAgIGJnTGF5ZXIsCisgICAg
ICBiZ0xheWVyICsgYmdMYXllckNvdW50IC0gMQorICAgICk7CisKKyAgICBjb25zdCBpc05vdE92
ZXJsYXBwZWQgPSBpc01pcExldmVsTm90T3ZlcmxhcHBlZCB8fCBpc0FycmF5TGF5ZXJOb3RPdmVy
bGFwcGVkOworCisgICAgY29uc3Qgc3VjY2VzcyA9IGluU2FtZVBhc3MgPyBpc05vdE92ZXJsYXBw
ZWQgOiB0cnVlOwogICAgIHQuZXhwZWN0VmFsaWRhdGlvbkVycm9yKCgpID0+IHsKICAgICAgIGVu
Y29kZXIuZmluaXNoKCk7CiAgICAgfSwgIXN1Y2Nlc3MpOwogICB9KTsKKworZy50ZXN0KCdzdWJy
ZXNvdXJjZXMsZGVwdGhfc3RlbmNpbF9hdHRhY2htZW50X2FuZF9iaW5kX2dyb3VwJykKKyAgLmRl
c2MoCisgICAgYAorICBUZXN0IHRoYXQgd2hlbiBvbmUgc3VicmVzb3VyY2Ugb2YgYSB0ZXh0dXJl
IGlzIHVzZWQgYXMgYSBkZXB0aCBzdGVuY2lsIGF0dGFjaG1lbnQsIGl0IGNhbm5vdCBiZQorICB1
c2VkIGluIGEgYmluZCBncm91cCBzaW11bHRhbmVvdXNseSBpbiB0aGUgc2FtZSByZW5kZXIgcGFz
cyBlbmNvZGVyLiBJdCBpcyBhbGxvd2VkIHdoZW4gdGhlIGJpbmQKKyAgZ3JvdXAgaXMgdXNlZCBp
biBhbm90aGVyIHJlbmRlciBwYXNzIGVuY29kZXIgaW5zdGVhZCBvZiB0aGUgc2FtZSBvbmUsIG9y
IHRoZSBzdWJyZXNvdXJjZSBpcyB1c2VkCisgIGFzIGEgcmVhZC1vbmx5IGRlcHRoIHN0ZW5jaWwg
YXR0YWNobWVudC5gCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdQorICAgICAgLmNvbWJpbmUo
J2RzTGV2ZWwnLCBbMCwgMV0pCisgICAgICAuY29tYmluZSgnZHNMYXllcicsIFswLCAxXSkKKyAg
ICAgIC5jb21iaW5lV2l0aFBhcmFtcyhbCisgICAgICAgIHsgYmdMZXZlbDogMCwgYmdMZXZlbENv
dW50OiAxIH0sCisgICAgICAgIHsgYmdMZXZlbDogMSwgYmdMZXZlbENvdW50OiAxIH0sCisgICAg
ICAgIHsgYmdMZXZlbDogMSwgYmdMZXZlbENvdW50OiAyIH0sCisgICAgICBdKQorICAgICAgLmNv
bWJpbmVXaXRoUGFyYW1zKFsKKyAgICAgICAgeyBiZ0xheWVyOiAwLCBiZ0xheWVyQ291bnQ6IDEg
fSwKKyAgICAgICAgeyBiZ0xheWVyOiAxLCBiZ0xheWVyQ291bnQ6IDEgfSwKKyAgICAgICAgeyBi
Z0xheWVyOiAxLCBiZ0xheWVyQ291bnQ6IDIgfSwKKyAgICAgIF0pCisgICAgICAuY29tYmluZSgn
ZHNSZWFkT25seScsIFt0cnVlLCBmYWxzZV0pCisgICAgICAuY29tYmluZSgnYmdBc3BlY3QnLCBb
J2RlcHRoLW9ubHknLCAnc3RlbmNpbC1vbmx5J10pCisgICAgICAuY29tYmluZSgnaW5TYW1lUGFz
cycsIFt0cnVlLCBmYWxzZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsK
KyAgICAgIGRzTGV2ZWwsCisgICAgICBkc0xheWVyLAorICAgICAgYmdMZXZlbCwKKyAgICAgIGJn
TGV2ZWxDb3VudCwKKyAgICAgIGJnTGF5ZXIsCisgICAgICBiZ0xheWVyQ291bnQsCisgICAgICBk
c1JlYWRPbmx5LAorICAgICAgYmdBc3BlY3QsCisgICAgICBpblNhbWVQYXNzLAorICAgIH0gPSB0
LnBhcmFtczsKKworICAgIGNvbnN0IHRleHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsK
KyAgICAgIGZvcm1hdDogJ2RlcHRoMjRwbHVzLXN0ZW5jaWw4JywKKyAgICAgIHVzYWdlOiBHUFVU
ZXh0dXJlVXNhZ2UuUkVOREVSX0FUVEFDSE1FTlQgfCBHUFVUZXh0dXJlVXNhZ2UuVEVYVFVSRV9C
SU5ESU5HLAorICAgICAgc2l6ZTogW2tUZXh0dXJlU2l6ZSwga1RleHR1cmVTaXplLCBrVGV4dHVy
ZUxheWVyc10sCisgICAgICBtaXBMZXZlbENvdW50OiBrVGV4dHVyZUxldmVscywKKyAgICB9KTsK
KworICAgIGNvbnN0IGJpbmRHcm91cFZpZXcgPSB0ZXh0dXJlLmNyZWF0ZVZpZXcoeworICAgICAg
ZGltZW5zaW9uOiAnMmQtYXJyYXknLAorICAgICAgYmFzZUFycmF5TGF5ZXI6IGJnTGF5ZXIsCisg
ICAgICBhcnJheUxheWVyQ291bnQ6IGJnTGF5ZXJDb3VudCwKKyAgICAgIGJhc2VNaXBMZXZlbDog
YmdMZXZlbCwKKyAgICAgIG1pcExldmVsQ291bnQ6IGJnTGV2ZWxDb3VudCwKKyAgICAgIGFzcGVj
dDogYmdBc3BlY3QsCisgICAgfSk7CisKKyAgICBjb25zdCBzYW1wbGVUeXBlID0gYmdBc3BlY3Qg
PT09ICdkZXB0aC1vbmx5JyA/ICdkZXB0aCcgOiAndWludCc7CisgICAgY29uc3QgYmluZEdyb3Vw
ID0gdC5jcmVhdGVCaW5kR3JvdXBGb3JUZXN0KGJpbmRHcm91cFZpZXcsICd0ZXh0dXJlJywgc2Ft
cGxlVHlwZSk7CisKKyAgICBjb25zdCBhdHRhY2htZW50VmlldyA9IHRleHR1cmUuY3JlYXRlVmll
dyh7CisgICAgICBiYXNlQXJyYXlMYXllcjogZHNMYXllciwKKyAgICAgIGFycmF5TGF5ZXJDb3Vu
dDogMSwKKyAgICAgIGJhc2VNaXBMZXZlbDogZHNMZXZlbCwKKyAgICAgIG1pcExldmVsQ291bnQ6
IDEsCisgICAgfSk7CisKKyAgICBjb25zdCBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0geworICAg
ICAgdmlldzogYXR0YWNobWVudFZpZXcsCisgICAgICBkZXB0aFJlYWRPbmx5OiBkc1JlYWRPbmx5
LAorICAgICAgZGVwdGhMb2FkT3A6ICdsb2FkJywKKyAgICAgIGRlcHRoU3RvcmVPcDogJ3N0b3Jl
JywKKyAgICAgIHN0ZW5jaWxSZWFkT25seTogZHNSZWFkT25seSwKKyAgICAgIHN0ZW5jaWxMb2Fk
T3A6ICdsb2FkJywKKyAgICAgIHN0ZW5jaWxTdG9yZU9wOiAnc3RvcmUnLAorICAgIH07CisKKyAg
ICBjb25zdCBlbmNvZGVyID0gdC5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBj
b25zdCByZW5kZXJQYXNzID0gZW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeworICAgICAgY29sb3JB
dHRhY2htZW50czogW10sCisgICAgICBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LAorICAgIH0pOwor
CisgICAgaWYgKGluU2FtZVBhc3MpIHsKKyAgICAgIHJlbmRlclBhc3Muc2V0QmluZEdyb3VwKDAs
IGJpbmRHcm91cCk7CisgICAgICByZW5kZXJQYXNzLmVuZCgpOworICAgIH0gZWxzZSB7CisgICAg
ICByZW5kZXJQYXNzLmVuZCgpOworCisgICAgICBjb25zdCB0ZXh0dXJlMiA9IHQuZGV2aWNlLmNy
ZWF0ZVRleHR1cmUoeworICAgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICAgICAgdXNh
Z2U6IEdQVVRleHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCwKKyAgICAgICAgc2l6ZTogW2tU
ZXh0dXJlU2l6ZSwga1RleHR1cmVTaXplLCAxXSwKKyAgICAgICAgbWlwTGV2ZWxDb3VudDogMSwK
KyAgICAgIH0pOworCisgICAgICBjb25zdCBjb2xvckF0dGFjaG1lbnQyID0gdC5nZXRDb2xvckF0
dGFjaG1lbnQodGV4dHVyZTIpOworICAgICAgY29uc3QgcmVuZGVyUGFzczIgPSBlbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyh7CisgICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFtjb2xvckF0dGFjaG1l
bnQyXSwKKyAgICAgIH0pOworCisgICAgICByZW5kZXJQYXNzMi5zZXRCaW5kR3JvdXAoMCwgYmlu
ZEdyb3VwKTsKKyAgICAgIHJlbmRlclBhc3MyLmVuZCgpOworICAgIH0KKworICAgIGNvbnN0IGlz
TWlwTGV2ZWxOb3RPdmVybGFwcGVkID0gdC5pc1JhbmdlTm90T3ZlcmxhcHBlZCgKKyAgICAgIGRz
TGV2ZWwsCisgICAgICBkc0xldmVsLAorICAgICAgYmdMZXZlbCwKKyAgICAgIGJnTGV2ZWwgKyBi
Z0xldmVsQ291bnQgLSAxCisgICAgKTsKKworICAgIGNvbnN0IGlzQXJyYXlMYXllck5vdE92ZXJs
YXBwZWQgPSB0LmlzUmFuZ2VOb3RPdmVybGFwcGVkKAorICAgICAgZHNMYXllciwKKyAgICAgIGRz
TGF5ZXIsCisgICAgICBiZ0xheWVyLAorICAgICAgYmdMYXllciArIGJnTGF5ZXJDb3VudCAtIDEK
KyAgICApOworCisgICAgY29uc3QgaXNOb3RPdmVybGFwcGVkID0gaXNNaXBMZXZlbE5vdE92ZXJs
YXBwZWQgfHwgaXNBcnJheUxheWVyTm90T3ZlcmxhcHBlZDsKKworICAgIGNvbnN0IHN1Y2Nlc3Mg
PSAhaW5TYW1lUGFzcyB8fCBpc05vdE92ZXJsYXBwZWQgfHwgZHNSZWFkT25seTsKKyAgICB0LmV4
cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7CisgICAgICBlbmNvZGVyLmZpbmlzaCgpOworICAg
IH0sICFzdWNjZXNzKTsKKyAgfSk7CisKK2cudGVzdCgnc3VicmVzb3VyY2VzLG11bHRpcGxlX2Jp
bmRfZ3JvdXBzJykKKyAgLmRlc2MoCisgICAgYAorICBUZXN0IHRoYXQgd2hlbiBvbmUgY29sb3Ig
dGV4dHVyZSBzdWJyZXNvdXJjZSBpcyBib3VuZCB0byBkaWZmZXJlbnQgYmluZCBncm91cHMsIGl0
cyBsaXN0IG9mCisgIGludGVybmFsIHVzYWdlcyB3aXRoaW4gb25lIHVzYWdlIHNjb3BlIGNhbiBv
bmx5IGJlIGEgY29tcGF0aWJsZSB1c2FnZSBsaXN0LiBGb3IgdGV4dHVyZQorICBzdWJyZXNvdXJj
ZXMgaW4gYmluZCBncm91cHMsIHRoZSBjb21wYXRpYmxlIHVzYWdlIGxpc3RzIGFyZSB7VEVYVFVS
RV9CSU5ESU5HfSBhbmQKKyAge1NUT1JBR0VfQklORElOR30sIHdoaWNoIG1lYW5zIGl0IGNhbiBv
bmx5IGJlIGJvdW5kIGFzIGJvdGggVEVYVFVSRV9CSU5ESU5HIGFuZCBTVE9SQUdFX0JJTkRJTkcg
aW4KKyAgZGlmZmVyZW50IHJlbmRlciBwYXNzIGVuY29kZXJzLCBvdGhlcndpc2UgYSB2YWxpZGF0
aW9uIGVycm9yIHdpbGwgb2NjdXIuYAorICApCisgIC5wYXJhbXModSA9PgorICAgIHUKKyAgICAg
IC5jb21iaW5lKCdiZzBMZXZlbHMnLCBbCisgICAgICAgIHsgYmFzZTogMCwgY291bnQ6IDEgfSwK
KyAgICAgICAgeyBiYXNlOiAxLCBjb3VudDogMSB9LAorICAgICAgICB7IGJhc2U6IDEsIGNvdW50
OiAyIH0sCisgICAgICBdKQorICAgICAgLmNvbWJpbmUoJ2JnMExheWVycycsIFsKKyAgICAgICAg
eyBiYXNlOiAwLCBjb3VudDogMSB9LAorICAgICAgICB7IGJhc2U6IDEsIGNvdW50OiAxIH0sCisg
ICAgICAgIHsgYmFzZTogMSwgY291bnQ6IDIgfSwKKyAgICAgIF0pCisgICAgICAuY29tYmluZSgn
YmcxTGV2ZWxzJywgWworICAgICAgICB7IGJhc2U6IDAsIGNvdW50OiAxIH0sCisgICAgICAgIHsg
YmFzZTogMSwgY291bnQ6IDEgfSwKKyAgICAgICAgeyBiYXNlOiAxLCBjb3VudDogMiB9LAorICAg
ICAgXSkKKyAgICAgIC5jb21iaW5lKCdiZzFMYXllcnMnLCBbCisgICAgICAgIHsgYmFzZTogMCwg
Y291bnQ6IDEgfSwKKyAgICAgICAgeyBiYXNlOiAxLCBjb3VudDogMSB9LAorICAgICAgICB7IGJh
c2U6IDEsIGNvdW50OiAyIH0sCisgICAgICBdKQorICAgICAgLmNvbWJpbmUoJ2JnVXNhZ2UwJywg
Wyd0ZXh0dXJlJywgJ3N0b3JhZ2UnXSkKKyAgICAgIC5jb21iaW5lKCdiZ1VzYWdlMScsIFsndGV4
dHVyZScsICdzdG9yYWdlJ10pCisgICAgICAudW5sZXNzKAorICAgICAgICB0ID0+CisgICAgICAg
ICAgKHQuYmdVc2FnZTAgPT09ICdzdG9yYWdlJyAmJiB0LmJnMExldmVscy5jb3VudCA+IDEpIHx8
CisgICAgICAgICAgKHQuYmdVc2FnZTEgPT09ICdzdG9yYWdlJyAmJiB0LmJnMUxldmVscy5jb3Vu
dCA+IDEpCisgICAgICApCisgICAgICAuY29tYmluZSgnaW5TYW1lUGFzcycsIFt0cnVlLCBmYWxz
ZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgYmcwTGV2ZWxzLCBiZzBM
YXllcnMsIGJnMUxldmVscywgYmcxTGF5ZXJzLCBiZ1VzYWdlMCwgYmdVc2FnZTEsIGluU2FtZVBh
c3MgfSA9IHQucGFyYW1zOworCisgICAgY29uc3QgdGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRl
eHR1cmUoeworICAgICAgZm9ybWF0OiAncmdiYTh1bm9ybScsCisgICAgICB1c2FnZTogR1BVVGV4
dHVyZVVzYWdlLlNUT1JBR0VfQklORElORyB8IEdQVVRleHR1cmVVc2FnZS5URVhUVVJFX0JJTkRJ
TkcsCisgICAgICBzaXplOiBba1RleHR1cmVTaXplLCBrVGV4dHVyZVNpemUsIGtUZXh0dXJlTGF5
ZXJzXSwKKyAgICAgIG1pcExldmVsQ291bnQ6IGtUZXh0dXJlTGV2ZWxzLAorICAgIH0pOworCisg
ICAgY29uc3QgYmcwID0gdGV4dHVyZS5jcmVhdGVWaWV3KHsKKyAgICAgIGRpbWVuc2lvbjogJzJk
LWFycmF5JywKKyAgICAgIGJhc2VBcnJheUxheWVyOiBiZzBMYXllcnMuYmFzZSwKKyAgICAgIGFy
cmF5TGF5ZXJDb3VudDogYmcwTGF5ZXJzLmNvdW50LAorICAgICAgYmFzZU1pcExldmVsOiBiZzBM
ZXZlbHMuYmFzZSwKKyAgICAgIG1pcExldmVsQ291bnQ6IGJnMExldmVscy5jb3VudCwKKyAgICB9
KTsKKworICAgIGNvbnN0IGJnMSA9IHRleHR1cmUuY3JlYXRlVmlldyh7CisgICAgICBkaW1lbnNp
b246ICcyZC1hcnJheScsCisgICAgICBiYXNlQXJyYXlMYXllcjogYmcxTGF5ZXJzLmJhc2UsCisg
ICAgICBhcnJheUxheWVyQ291bnQ6IGJnMUxheWVycy5jb3VudCwKKyAgICAgIGJhc2VNaXBMZXZl
bDogYmcxTGV2ZWxzLmJhc2UsCisgICAgICBtaXBMZXZlbENvdW50OiBiZzFMZXZlbHMuY291bnQs
CisgICAgfSk7CisKKyAgICBjb25zdCBiaW5kR3JvdXAwID0gdC5jcmVhdGVCaW5kR3JvdXBGb3JU
ZXN0KGJnMCwgYmdVc2FnZTAsICdmbG9hdCcpOworICAgIGNvbnN0IGJpbmRHcm91cDEgPSB0LmNy
ZWF0ZUJpbmRHcm91cEZvclRlc3QoYmcxLCBiZ1VzYWdlMSwgJ2Zsb2F0Jyk7CisKKyAgICBjb25z
dCBjb2xvclRleHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgIGZvcm1hdDog
J3JnYmE4dW5vcm0nLAorICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNI
TUVOVCwKKyAgICAgIHNpemU6IFtrVGV4dHVyZVNpemUsIGtUZXh0dXJlU2l6ZSwgMV0sCisgICAg
ICBtaXBMZXZlbENvdW50OiAxLAorICAgIH0pOworCisgICAgY29uc3QgY29sb3JBdHRhY2htZW50
ID0gdC5nZXRDb2xvckF0dGFjaG1lbnQoY29sb3JUZXh0dXJlKTsKKyAgICBjb25zdCBlbmNvZGVy
ID0gdC5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBjb25zdCByZW5kZXJQYXNz
ID0gZW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeworICAgICAgY29sb3JBdHRhY2htZW50czogW2Nv
bG9yQXR0YWNobWVudF0sCisgICAgfSk7CisKKyAgICBpZiAoaW5TYW1lUGFzcykgeworICAgICAg
cmVuZGVyUGFzcy5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwMCk7CisgICAgICByZW5kZXJQYXNz
LnNldEJpbmRHcm91cCgxLCBiaW5kR3JvdXAxKTsKKyAgICAgIHJlbmRlclBhc3MuZW5kKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHJlbmRlclBhc3Muc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91cDAp
OworICAgICAgcmVuZGVyUGFzcy5lbmQoKTsKKworICAgICAgY29uc3QgcmVuZGVyUGFzczIgPSBl
bmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7CisgICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFtjb2xv
ckF0dGFjaG1lbnRdLAorICAgICAgfSk7CisKKyAgICAgIHJlbmRlclBhc3MyLnNldEJpbmRHcm91
cCgxLCBiaW5kR3JvdXAxKTsKKyAgICAgIHJlbmRlclBhc3MyLmVuZCgpOworICAgIH0KKworICAg
IGNvbnN0IGlzTWlwTGV2ZWxOb3RPdmVybGFwcGVkID0gdC5pc1JhbmdlTm90T3ZlcmxhcHBlZCgK
KyAgICAgIGJnMExldmVscy5iYXNlLAorICAgICAgYmcwTGV2ZWxzLmJhc2UgKyBiZzBMZXZlbHMu
Y291bnQgLSAxLAorICAgICAgYmcxTGV2ZWxzLmJhc2UsCisgICAgICBiZzFMZXZlbHMuYmFzZSAr
IGJnMUxldmVscy5jb3VudCAtIDEKKyAgICApOworCisgICAgY29uc3QgaXNBcnJheUxheWVyTm90
T3ZlcmxhcHBlZCA9IHQuaXNSYW5nZU5vdE92ZXJsYXBwZWQoCisgICAgICBiZzBMYXllcnMuYmFz
ZSwKKyAgICAgIGJnMExheWVycy5iYXNlICsgYmcwTGF5ZXJzLmNvdW50IC0gMSwKKyAgICAgIGJn
MUxheWVycy5iYXNlLAorICAgICAgYmcxTGF5ZXJzLmJhc2UgKyBiZzFMYXllcnMuY291bnQgLSAx
CisgICAgKTsKKworICAgIGNvbnN0IGlzTm90T3ZlcmxhcHBlZCA9IGlzTWlwTGV2ZWxOb3RPdmVy
bGFwcGVkIHx8IGlzQXJyYXlMYXllck5vdE92ZXJsYXBwZWQ7CisKKyAgICBjb25zdCBzdWNjZXNz
ID0gIWluU2FtZVBhc3MgfHwgaXNOb3RPdmVybGFwcGVkIHx8IGJnVXNhZ2UwID09PSBiZ1VzYWdl
MTsKKyAgICB0LmV4cGVjdFZhbGlkYXRpb25FcnJvcigoKSA9PiB7CisgICAgICBlbmNvZGVyLmZp
bmlzaCgpOworICAgIH0sICFzdWNjZXNzKTsKKyAgfSk7CisKK2cudGVzdCgnc3VicmVzb3VyY2Vz
LGRlcHRoX3N0ZW5jaWxfdGV4dHVyZV9pbl9iaW5kX2dyb3VwcycpCisgIC5kZXNjKAorICAgIGAK
KyAgVGVzdCB0aGF0IHdoZW4gb25lIGRlcHRoIHN0ZW5jaWwgdGV4dHVyZSBzdWJyZXNvdXJjZSBp
cyBib3VuZCB0byBkaWZmZXJlbnQgYmluZCBncm91cHMsIHdlIGNhbgorICBhbHdheXMgYmluZCB0
aGVzZSB0d28gYmluZCBncm91cHMgaW4gZWl0aGVyIHRoZSBzYW1lIG9yIGRpZmZlcmVudCByZW5k
ZXIgcGFzcyBlbmNvZGVyIGFzIHRoZSBkZXB0aAorICBzdGVuY2lsIHRleHR1cmUgY2FuIG9ubHkg
YmUgYm91bmQgYXMgVEVYVFVSRV9CSU5ESU5HIGluIHRoZSBiaW5kIGdyb3VwLmAKKyAgKQorICAu
cGFyYW1zKHUgPT4KKyAgICB1CisgICAgICAuY29tYmluZSgndmlldzBMZXZlbHMnLCBbCisgICAg
ICAgIHsgYmFzZTogMCwgY291bnQ6IDEgfSwKKyAgICAgICAgeyBiYXNlOiAxLCBjb3VudDogMSB9
LAorICAgICAgICB7IGJhc2U6IDEsIGNvdW50OiAyIH0sCisgICAgICBdKQorICAgICAgLmNvbWJp
bmUoJ3ZpZXcwTGF5ZXJzJywgWworICAgICAgICB7IGJhc2U6IDAsIGNvdW50OiAxIH0sCisgICAg
ICAgIHsgYmFzZTogMSwgY291bnQ6IDEgfSwKKyAgICAgICAgeyBiYXNlOiAxLCBjb3VudDogMiB9
LAorICAgICAgXSkKKyAgICAgIC5jb21iaW5lKCd2aWV3MUxldmVscycsIFsKKyAgICAgICAgeyBi
YXNlOiAwLCBjb3VudDogMSB9LAorICAgICAgICB7IGJhc2U6IDEsIGNvdW50OiAxIH0sCisgICAg
ICAgIHsgYmFzZTogMSwgY291bnQ6IDIgfSwKKyAgICAgIF0pCisgICAgICAuY29tYmluZSgndmll
dzFMYXllcnMnLCBbCisgICAgICAgIHsgYmFzZTogMCwgY291bnQ6IDEgfSwKKyAgICAgICAgeyBi
YXNlOiAxLCBjb3VudDogMSB9LAorICAgICAgICB7IGJhc2U6IDEsIGNvdW50OiAyIH0sCisgICAg
ICBdKQorICAgICAgLmNvbWJpbmUoJ2FzcGVjdDAnLCBbJ2RlcHRoLW9ubHknLCAnc3RlbmNpbC1v
bmx5J10pCisgICAgICAuY29tYmluZSgnYXNwZWN0MScsIFsnZGVwdGgtb25seScsICdzdGVuY2ls
LW9ubHknXSkKKyAgICAgIC5jb21iaW5lKCdpblNhbWVQYXNzJywgW3RydWUsIGZhbHNlXSkKKyAg
KQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeworICAgICAgdmlldzBMZXZlbHMsCisg
ICAgICB2aWV3MExheWVycywKKyAgICAgIHZpZXcxTGV2ZWxzLAorICAgICAgdmlldzFMYXllcnMs
CisgICAgICBhc3BlY3QwLAorICAgICAgYXNwZWN0MSwKKyAgICAgIGluU2FtZVBhc3MsCisgICAg
fSA9IHQucGFyYW1zOworCisgICAgY29uc3QgdGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1
cmUoeworICAgICAgZm9ybWF0OiAnZGVwdGgyNHBsdXMtc3RlbmNpbDgnLAorICAgICAgdXNhZ2U6
IEdQVVRleHR1cmVVc2FnZS5URVhUVVJFX0JJTkRJTkcsCisgICAgICBzaXplOiBba1RleHR1cmVT
aXplLCBrVGV4dHVyZVNpemUsIGtUZXh0dXJlTGF5ZXJzXSwKKyAgICAgIG1pcExldmVsQ291bnQ6
IGtUZXh0dXJlTGV2ZWxzLAorICAgIH0pOworCisgICAgY29uc3QgYmluZEdyb3VwVmlldzAgPSB0
ZXh0dXJlLmNyZWF0ZVZpZXcoeworICAgICAgZGltZW5zaW9uOiAnMmQtYXJyYXknLAorICAgICAg
YmFzZUFycmF5TGF5ZXI6IHZpZXcwTGF5ZXJzLmJhc2UsCisgICAgICBhcnJheUxheWVyQ291bnQ6
IHZpZXcwTGF5ZXJzLmNvdW50LAorICAgICAgYmFzZU1pcExldmVsOiB2aWV3MExldmVscy5iYXNl
LAorICAgICAgbWlwTGV2ZWxDb3VudDogdmlldzBMZXZlbHMuY291bnQsCisgICAgICBhc3BlY3Q6
IGFzcGVjdDAsCisgICAgfSk7CisKKyAgICBjb25zdCBiaW5kR3JvdXBWaWV3MSA9IHRleHR1cmUu
Y3JlYXRlVmlldyh7CisgICAgICBkaW1lbnNpb246ICcyZC1hcnJheScsCisgICAgICBiYXNlQXJy
YXlMYXllcjogdmlldzFMYXllcnMuYmFzZSwKKyAgICAgIGFycmF5TGF5ZXJDb3VudDogdmlldzFM
YXllcnMuY291bnQsCisgICAgICBiYXNlTWlwTGV2ZWw6IHZpZXcxTGV2ZWxzLmJhc2UsCisgICAg
ICBtaXBMZXZlbENvdW50OiB2aWV3MUxldmVscy5jb3VudCwKKyAgICAgIGFzcGVjdDogYXNwZWN0
MSwKKyAgICB9KTsKKworICAgIGNvbnN0IHNhbXBsZVR5cGUwID0gYXNwZWN0MCA9PT0gJ2RlcHRo
LW9ubHknID8gJ2RlcHRoJyA6ICd1aW50JzsKKyAgICBjb25zdCBzYW1wbGVUeXBlMSA9IGFzcGVj
dDEgPT09ICdkZXB0aC1vbmx5JyA/ICdkZXB0aCcgOiAndWludCc7CisgICAgY29uc3QgYmluZEdy
b3VwMCA9IHQuY3JlYXRlQmluZEdyb3VwRm9yVGVzdChiaW5kR3JvdXBWaWV3MCwgJ3RleHR1cmUn
LCBzYW1wbGVUeXBlMCk7CisgICAgY29uc3QgYmluZEdyb3VwMSA9IHQuY3JlYXRlQmluZEdyb3Vw
Rm9yVGVzdChiaW5kR3JvdXBWaWV3MSwgJ3RleHR1cmUnLCBzYW1wbGVUeXBlMSk7CisKKyAgICBj
b25zdCBjb2xvclRleHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgIGZvcm1h
dDogJ3JnYmE4dW5vcm0nLAorICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5SRU5ERVJfQVRU
QUNITUVOVCwKKyAgICAgIHNpemU6IFtrVGV4dHVyZVNpemUsIGtUZXh0dXJlU2l6ZSwgMV0sCisg
ICAgICBtaXBMZXZlbENvdW50OiAxLAorICAgIH0pOworCisgICAgY29uc3QgY29sb3JBdHRhY2ht
ZW50ID0gdC5nZXRDb2xvckF0dGFjaG1lbnQoY29sb3JUZXh0dXJlKTsKKyAgICBjb25zdCBlbmNv
ZGVyID0gdC5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBjb25zdCByZW5kZXJQ
YXNzID0gZW5jb2Rlci5iZWdpblJlbmRlclBhc3MoeworICAgICAgY29sb3JBdHRhY2htZW50czog
W2NvbG9yQXR0YWNobWVudF0sCisgICAgfSk7CisKKyAgICBpZiAoaW5TYW1lUGFzcykgeworICAg
ICAgcmVuZGVyUGFzcy5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwMCk7CisgICAgICByZW5kZXJQ
YXNzLnNldEJpbmRHcm91cCgxLCBiaW5kR3JvdXAxKTsKKyAgICAgIHJlbmRlclBhc3MuZW5kKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgIHJlbmRlclBhc3Muc2V0QmluZEdyb3VwKDAsIGJpbmRHcm91
cDApOworICAgICAgcmVuZGVyUGFzcy5lbmQoKTsKKworICAgICAgY29uc3QgcmVuZGVyUGFzczIg
PSBlbmNvZGVyLmJlZ2luUmVuZGVyUGFzcyh7CisgICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFtj
b2xvckF0dGFjaG1lbnRdLAorICAgICAgfSk7CisKKyAgICAgIHJlbmRlclBhc3MyLnNldEJpbmRH
cm91cCgxLCBiaW5kR3JvdXAxKTsKKyAgICAgIHJlbmRlclBhc3MyLmVuZCgpOworICAgIH0KKwor
ICAgIHQuZXhwZWN0VmFsaWRhdGlvbkVycm9yKCgpID0+IHsKKyAgICAgIGVuY29kZXIuZmluaXNo
KCk7CisgICAgfSwgZmFsc2UpOworICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9yZXNvdXJjZV91c2FnZXMvdGV4dHVy
ZS9pbl9yZW5kZXJfbWlzYy5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL3Jlc291cmNlX3VzYWdlcy90ZXh0dXJlL2luX3JlbmRlcl9t
aXNjLnNwZWMuanMKaW5kZXggNDJlZTQ5OTBkZjYzLi4xMzVhMzBiZWM2NjAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9yZXNv
dXJjZV91c2FnZXMvdGV4dHVyZS9pbl9yZW5kZXJfbWlzYy5zcGVjLmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9yZXNvdXJjZV91c2Fn
ZXMvdGV4dHVyZS9pbl9yZW5kZXJfbWlzYy5zcGVjLmpzCkBAIC0xLDEzICsxLDQyOSBAQAogLyoq
CiAgKiBBVVRPLUdFTkVSQVRFRCAtIERPIE5PVCBFRElULiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9ncHV3ZWIvY3RzCiAgKiovIGV4cG9ydCBjb25zdCBkZXNjcmlwdGlvbiA9IGAKLVRPRE86
Ci0tIDIgdmlld3M6IHVwb24gdGhlIHNhbWUgc3VicmVzb3VyY2UsIG9yIGRpZmZlcmVudCBzdWJy
ZXNvdXJjZXMgb2YgdGhlIHNhbWUgdGV4dHVyZQotICAgIC0gdGV4dHVyZSB1c2FnZXMgaW4gY29w
aWVzIGFuZCBpbiByZW5kZXIgcGFzcwotICAgIC0gY29uc2VjdXRpdmVseSBzZXQgYmluZCBncm91
cHMgb24gdGhlIHNhbWUgaW5kZXggKEBSaWNoYXJkLVl1bmNoYW86IE1heWJlIEkgY2FuIGNvbWJp
bmUgdGhpcyBvbmUgd2l0aCB0aGUgYWJvdmUgdGVzdHMuIFRoZSB0d28gYmluZCBncm91cHMgY2Fu
IGVpdGhlciBoYXZlIHRoZSBzYW1lIGluZGV4IG9yIGRpZmZlcmVudCBpbmRpY2VzLikKLSAgICAt
IHVudXNlZCBiaW5kIGdyb3VwcworVGV4dHVyZSBVc2FnZXMgVmFsaWRhdGlvbiBUZXN0cyBvbiBB
bGwgS2luZHMgb2YgV2ViR1BVIFN1YnJlc291cmNlIFVzYWdlIFNjb3Blcy4KIGA7CiBpbXBvcnQg
eyBtYWtlVGVzdEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay90
ZXN0X2dyb3VwLmpzJzsKK2ltcG9ydCB7IHVucmVhY2hhYmxlIH0gZnJvbSAnLi4vLi4vLi4vLi4v
Li4vY29tbW9uL3V0aWwvdXRpbC5qcyc7CiBpbXBvcnQgeyBWYWxpZGF0aW9uVGVzdCB9IGZyb20g
Jy4uLy4uL3ZhbGlkYXRpb25fdGVzdC5qcyc7CiAKLWV4cG9ydCBjb25zdCBnID0gbWFrZVRlc3RH
cm91cChWYWxpZGF0aW9uVGVzdCk7CitjbGFzcyBGIGV4dGVuZHMgVmFsaWRhdGlvblRlc3Qgewor
ICBjcmVhdGVCaW5kR3JvdXBMYXlvdXRGb3JUZXN0KHRleHR1cmVVc2FnZSwgc2FtcGxlVHlwZSwg
dmlzaWJpbGl0eSA9IEdQVVNoYWRlclN0YWdlWydGUkFHTUVOVCddKSB7CisgICAgY29uc3QgYmlu
ZEdyb3VwTGF5b3V0RW50cnkgPSB7CisgICAgICBiaW5kaW5nOiAwLAorICAgICAgdmlzaWJpbGl0
eSwKKyAgICB9OworCisgICAgc3dpdGNoICh0ZXh0dXJlVXNhZ2UpIHsKKyAgICAgIGNhc2UgJ3Rl
eHR1cmUnOgorICAgICAgICBiaW5kR3JvdXBMYXlvdXRFbnRyeS50ZXh0dXJlID0geyB2aWV3RGlt
ZW5zaW9uOiAnMmQtYXJyYXknLCBzYW1wbGVUeXBlIH07CisgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSAnc3RvcmFnZSc6CisgICAgICAgIGJpbmRHcm91cExheW91dEVudHJ5LnN0b3JhZ2VUZXh0
dXJlID0geworICAgICAgICAgIGFjY2VzczogJ3dyaXRlLW9ubHknLAorICAgICAgICAgIGZvcm1h
dDogJ3JnYmE4dW5vcm0nLAorICAgICAgICAgIHZpZXdEaW1lbnNpb246ICcyZC1hcnJheScsCisg
ICAgICAgIH07CisKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICB1bnJl
YWNoYWJsZSgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdGhpcy5kZXZp
Y2UuY3JlYXRlQmluZEdyb3VwTGF5b3V0KHsKKyAgICAgIGVudHJpZXM6IFtiaW5kR3JvdXBMYXlv
dXRFbnRyeV0sCisgICAgfSk7CisgIH0KKworICBjcmVhdGVCaW5kR3JvdXBGb3JUZXN0KAorICAg
IHRleHR1cmVWaWV3LAorICAgIHRleHR1cmVVc2FnZSwKKyAgICBzYW1wbGVUeXBlLAorICAgIHZp
c2liaWxpdHkgPSBHUFVTaGFkZXJTdGFnZVsnRlJBR01FTlQnXQorICApIHsKKyAgICByZXR1cm4g
dGhpcy5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAgICAgIGxheW91dDogdGhpcy5jcmVhdGVC
aW5kR3JvdXBMYXlvdXRGb3JUZXN0KHRleHR1cmVVc2FnZSwgc2FtcGxlVHlwZSwgdmlzaWJpbGl0
eSksCisgICAgICBlbnRyaWVzOiBbeyBiaW5kaW5nOiAwLCByZXNvdXJjZTogdGV4dHVyZVZpZXcg
fV0sCisgICAgfSk7CisgIH0KK30KKworZXhwb3J0IGNvbnN0IGcgPSBtYWtlVGVzdEdyb3VwKEYp
OworCitjb25zdCBrVGV4dHVyZVNpemUgPSAxNjsKK2NvbnN0IGtUZXh0dXJlTGF5ZXJzID0gMzsK
KworZy50ZXN0KCdzdWJyZXNvdXJjZXMsc2V0X2JpbmRfZ3JvdXBfb25fc2FtZV9pbmRleF9jb2xv
cl90ZXh0dXJlJykKKyAgLmRlc2MoCisgICAgYAorICBUZXN0IHRoYXQgd2hlbiBvbmUgY29sb3Ig
dGV4dHVyZSBzdWJyZXNvdXJjZSBpcyBib3VuZCB0byBkaWZmZXJlbnQgYmluZCBncm91cHMsIHdo
ZXRoZXIgdGhlIGJpbmQKKyAgZ3JvdXBzIGFyZSByZXNldCBieSBhbm90aGVyIGNvbXBhdGlibGUg
b25lcyBvciBub3QsIGl0cyBsaXN0IG9mIGludGVybmFsIHVzYWdlcyB3aXRoaW4gb25lIHVzYWdl
CisgIHNjb3BlIGNhbiBvbmx5IGJlIGEgY29tcGF0aWJsZSB1c2FnZSBsaXN0LmAKKyAgKQorICAu
cGFyYW1zKHUgPT4KKyAgICB1CisgICAgICAuY29tYmluZVdpdGhQYXJhbXMoWworICAgICAgICB7
IHVzZURpZmZlcmVudFRleHR1cmVBc1RleHR1cmUyOiB0cnVlLCBiYXNlTGF5ZXIyOiAwLCB2aWV3
MkJpbmRpbmc6ICd0ZXh0dXJlJyB9LAorICAgICAgICB7IHVzZURpZmZlcmVudFRleHR1cmVBc1Rl
eHR1cmUyOiBmYWxzZSwgYmFzZUxheWVyMjogMCwgdmlldzJCaW5kaW5nOiAndGV4dHVyZScgfSwK
KyAgICAgICAgeyB1c2VEaWZmZXJlbnRUZXh0dXJlQXNUZXh0dXJlMjogZmFsc2UsIGJhc2VMYXll
cjI6IDEsIHZpZXcyQmluZGluZzogJ3RleHR1cmUnIH0sCisgICAgICAgIHsgdXNlRGlmZmVyZW50
VGV4dHVyZUFzVGV4dHVyZTI6IGZhbHNlLCBiYXNlTGF5ZXIyOiAwLCB2aWV3MkJpbmRpbmc6ICdz
dG9yYWdlJyB9LAorICAgICAgICB7IHVzZURpZmZlcmVudFRleHR1cmVBc1RleHR1cmUyOiBmYWxz
ZSwgYmFzZUxheWVyMjogMSwgdmlldzJCaW5kaW5nOiAnc3RvcmFnZScgfSwKKyAgICAgIF0pCisg
ICAgICAuY29tYmluZSgnaGFzQ29uZmxpY3QnLCBbdHJ1ZSwgZmFsc2VdKQorICApCisgIC5mbihh
c3luYyB0ID0+IHsKKyAgICBjb25zdCB7IHVzZURpZmZlcmVudFRleHR1cmVBc1RleHR1cmUyLCBi
YXNlTGF5ZXIyLCB2aWV3MkJpbmRpbmcsIGhhc0NvbmZsaWN0IH0gPSB0LnBhcmFtczsKKworICAg
IGNvbnN0IHRleHR1cmUwID0gdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICBmb3JtYXQ6
ICdyZ2JhOHVub3JtJywKKyAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuVEVYVFVSRV9CSU5E
SU5HIHwgR1BVVGV4dHVyZVVzYWdlLlNUT1JBR0VfQklORElORywKKyAgICAgIHNpemU6IFtrVGV4
dHVyZVNpemUsIGtUZXh0dXJlU2l6ZSwga1RleHR1cmVMYXllcnNdLAorICAgIH0pOworCisgICAg
Ly8gV2UgYWx3YXlzIGJpbmQgdGhlIGZpcnN0IGxheWVyIG9mIHRoZSB0ZXh0dXJlIHRvIGJpbmRH
cm91cDAuCisgICAgY29uc3QgdGV4dHVyZVZpZXcwID0gdGV4dHVyZTAuY3JlYXRlVmlldyh7Cisg
ICAgICBkaW1lbnNpb246ICcyZC1hcnJheScsCisgICAgICBiYXNlQXJyYXlMYXllcjogMCwKKyAg
ICAgIGFycmF5TGF5ZXJDb3VudDogMSwKKyAgICB9KTsKKworICAgIGNvbnN0IGJpbmRHcm91cDAg
PSB0LmNyZWF0ZUJpbmRHcm91cEZvclRlc3QodGV4dHVyZVZpZXcwLCB2aWV3MkJpbmRpbmcsICdm
bG9hdCcpOworCisgICAgLy8gSW4gb25lIHJlbmRlclBhc3NFbmNvZGVyIGl0IGlzIGFuIGVycm9y
IHRvIHNldCBib3RoIGJpbmRHcm91cDAgYW5kIGJpbmRHcm91cDEuCisgICAgY29uc3QgdmlldzFC
aW5kaW5nID0gaGFzQ29uZmxpY3QKKyAgICAgID8gdmlldzJCaW5kaW5nID09PSAndGV4dHVyZScK
KyAgICAgICAgPyAnc3RvcmFnZScKKyAgICAgICAgOiAndGV4dHVyZScKKyAgICAgIDogdmlldzJC
aW5kaW5nOworICAgIGNvbnN0IGJpbmRHcm91cDEgPSB0LmNyZWF0ZUJpbmRHcm91cEZvclRlc3Qo
dGV4dHVyZVZpZXcwLCB2aWV3MUJpbmRpbmcsICdmbG9hdCcpOworCisgICAgY29uc3QgdGV4dHVy
ZTIgPSB1c2VEaWZmZXJlbnRUZXh0dXJlQXNUZXh0dXJlMgorICAgICAgPyB0LmRldmljZS5jcmVh
dGVUZXh0dXJlKHsKKyAgICAgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICAgICAgICB1
c2FnZTogR1BVVGV4dHVyZVVzYWdlLlRFWFRVUkVfQklORElORyB8IEdQVVRleHR1cmVVc2FnZS5T
VE9SQUdFX0JJTkRJTkcsCisgICAgICAgICAgc2l6ZTogW2tUZXh0dXJlU2l6ZSwga1RleHR1cmVT
aXplLCBrVGV4dHVyZUxheWVyc10sCisgICAgICAgIH0pCisgICAgICA6IHRleHR1cmUwOworICAg
IGNvbnN0IHRleHR1cmVWaWV3MiA9IHRleHR1cmUyLmNyZWF0ZVZpZXcoeworICAgICAgZGltZW5z
aW9uOiAnMmQtYXJyYXknLAorICAgICAgYmFzZUFycmF5TGF5ZXI6IGJhc2VMYXllcjIsCisgICAg
ICBhcnJheUxheWVyQ291bnQ6IGtUZXh0dXJlTGF5ZXJzIC0gYmFzZUxheWVyMiwKKyAgICB9KTsK
KworICAgIC8vIFRoZXJlIHNob3VsZCBiZSBubyBjb25mbGljdCBiZXR3ZWVuIGJpbmRHcm91cDAg
YW5kIHZhbGlkQmluZEdyb3VwMi4KKyAgICBjb25zdCB2YWxpZEJpbmRHcm91cDIgPSB0LmNyZWF0
ZUJpbmRHcm91cEZvclRlc3QodGV4dHVyZVZpZXcyLCB2aWV3MkJpbmRpbmcsICdmbG9hdCcpOwor
CisgICAgY29uc3QgY29sb3JUZXh0dXJlID0gdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAg
ICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuUkVO
REVSX0FUVEFDSE1FTlQsCisgICAgICBzaXplOiBba1RleHR1cmVTaXplLCBrVGV4dHVyZVNpemUs
IDFdLAorICAgIH0pOworCisgICAgY29uc3QgZW5jb2RlciA9IHQuZGV2aWNlLmNyZWF0ZUNvbW1h
bmRFbmNvZGVyKCk7CisgICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBlbmNvZGVyLmJlZ2lu
UmVuZGVyUGFzcyh7CisgICAgICBjb2xvckF0dGFjaG1lbnRzOiBbCisgICAgICAgIHsKKyAgICAg
ICAgICB2aWV3OiBjb2xvclRleHR1cmUuY3JlYXRlVmlldygpLAorICAgICAgICAgIGxvYWRPcDog
J2xvYWQnLAorICAgICAgICAgIHN0b3JlT3A6ICdzdG9yZScsCisgICAgICAgIH0sCisgICAgICBd
LAorICAgIH0pOworCisgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDAsIGJpbmRH
cm91cDApOworICAgIHJlbmRlclBhc3NFbmNvZGVyLnNldEJpbmRHcm91cCgxLCBiaW5kR3JvdXAx
KTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMSwgdmFsaWRCaW5kR3JvdXAy
KTsKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5lbmQoKTsKKworICAgIHQuZXhwZWN0VmFsaWRhdGlv
bkVycm9yKCgpID0+IHsKKyAgICAgIGVuY29kZXIuZmluaXNoKCk7CisgICAgfSwgaGFzQ29uZmxp
Y3QpOworICB9KTsKKworZy50ZXN0KCdzdWJyZXNvdXJjZXMsc2V0X2JpbmRfZ3JvdXBfb25fc2Ft
ZV9pbmRleF9kZXB0aF9zdGVuY2lsX3RleHR1cmUnKQorICAuZGVzYygKKyAgICBgCisgIFRlc3Qg
dGhhdCB3aGVuIG9uZSBkZXB0aCBzdGVuY2lsIHRleHR1cmUgc3VicmVzb3VyY2UgaXMgYm91bmQg
dG8gZGlmZmVyZW50IGJpbmQgZ3JvdXBzLCB3aGV0aGVyCisgIHRoZSBiaW5kIGdyb3VwcyBhcmUg
cmVzZXQgYnkgYW5vdGhlciBjb21wYXRpYmxlIG9uZXMgb3Igbm90LCBpdHMgbGlzdCBvZiBpbnRl
cm5hbCB1c2FnZXMgd2l0aGluCisgIG9uZSB1c2FnZSBzY29wZSBjYW4gb25seSBiZSBhIGNvbXBh
dGlibGUgdXNhZ2UgbGlzdC5gCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdQorICAgICAgLmNv
bWJpbmUoJ2JpbmRBc3BlY3QnLCBbJ2RlcHRoLW9ubHknLCAnc3RlbmNpbC1vbmx5J10pCisgICAg
ICAuY29tYmluZSgnZGVwdGhTdGVuY2lsUmVhZE9ubHknLCBbdHJ1ZSwgZmFsc2VdKQorICApCisg
IC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGJpbmRBc3BlY3QsIGRlcHRoU3RlbmNpbFJl
YWRPbmx5IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCBkZXB0aFN0ZW5jaWxUZXh0dXJlID0gdC5k
ZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICBmb3JtYXQ6ICdkZXB0aDI0cGx1cy1zdGVuY2ls
OCcsCisgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlRFWFRVUkVfQklORElORyB8IEdQVVRl
eHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCwKKyAgICAgIHNpemU6IFtrVGV4dHVyZVNpemUs
IGtUZXh0dXJlU2l6ZSwgMV0sCisgICAgfSk7CisKKyAgICBjb25zdCBjb25mbGljdGVkVG9Ob25S
ZWFkT25seUF0dGFjaG1lbnRCaW5kR3JvdXAgPSB0LmNyZWF0ZUJpbmRHcm91cEZvclRlc3QoCisg
ICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlLmNyZWF0ZVZpZXcoeworICAgICAgICBkaW1lbnNpb246
ICcyZC1hcnJheScsCisgICAgICAgIGFzcGVjdDogYmluZEFzcGVjdCwKKyAgICAgIH0pLAorCisg
ICAgICAndGV4dHVyZScsCisgICAgICBiaW5kQXNwZWN0ID09PSAnZGVwdGgtb25seScgPyAnZGVw
dGgnIDogJ3VpbnQnCisgICAgKTsKKworICAgIGNvbnN0IGNvbG9yVGV4dHVyZSA9IHQuZGV2aWNl
LmNyZWF0ZVRleHR1cmUoeworICAgICAgZm9ybWF0OiAncmdiYTh1bm9ybScsCisgICAgICB1c2Fn
ZTogR1BVVGV4dHVyZVVzYWdlLlRFWFRVUkVfQklORElORyB8IEdQVVRleHR1cmVVc2FnZS5TVE9S
QUdFX0JJTkRJTkcsCisgICAgICBzaXplOiBba1RleHR1cmVTaXplLCBrVGV4dHVyZVNpemUsIDFd
LAorICAgIH0pOworCisgICAgY29uc3QgdmFsaWRCaW5kR3JvdXAgPSB0LmNyZWF0ZUJpbmRHcm91
cEZvclRlc3QoCisgICAgICBjb2xvclRleHR1cmUuY3JlYXRlVmlldyh7CisgICAgICAgIGRpbWVu
c2lvbjogJzJkLWFycmF5JywKKyAgICAgIH0pLAorCisgICAgICAndGV4dHVyZScsCisgICAgICAn
ZmxvYXQnCisgICAgKTsKKworICAgIGNvbnN0IGVuY29kZXIgPSB0LmRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOworICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gZW5jb2Rlci5iZWdp
blJlbmRlclBhc3MoeworICAgICAgY29sb3JBdHRhY2htZW50czogW10sCisgICAgICBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50OiB7CisgICAgICAgIHZpZXc6IGRlcHRoU3RlbmNpbFRleHR1cmUuY3Jl
YXRlVmlldygpLAorICAgICAgICBkZXB0aFJlYWRPbmx5OiBkZXB0aFN0ZW5jaWxSZWFkT25seSwK
KyAgICAgICAgc3RlbmNpbFJlYWRPbmx5OiBkZXB0aFN0ZW5jaWxSZWFkT25seSwKKyAgICAgIH0s
CisgICAgfSk7CisKKyAgICByZW5kZXJQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgY29uZmxp
Y3RlZFRvTm9uUmVhZE9ubHlBdHRhY2htZW50QmluZEdyb3VwKTsKKyAgICByZW5kZXJQYXNzRW5j
b2Rlci5zZXRCaW5kR3JvdXAoMCwgdmFsaWRCaW5kR3JvdXApOworICAgIHJlbmRlclBhc3NFbmNv
ZGVyLmVuZCgpOworCisgICAgdC5leHBlY3RWYWxpZGF0aW9uRXJyb3IoKCkgPT4geworICAgICAg
ZW5jb2Rlci5maW5pc2goKTsKKyAgICB9LCAhZGVwdGhTdGVuY2lsUmVhZE9ubHkpOworICB9KTsK
KworZy50ZXN0KCdzdWJyZXNvdXJjZXMsc2V0X3VudXNlZF9iaW5kX2dyb3VwJykKKyAgLmRlc2Mo
CisgICAgYAorICBUZXN0IHRoYXQgd2hlbiBvbmUgdGV4dHVyZSBzdWJyZXNvdXJjZSBpcyBib3Vu
ZCB0byBkaWZmZXJlbnQgYmluZCBncm91cHMgYW5kIHRoZSBiaW5kIGdyb3VwcyBhcmUKKyAgdXNl
ZCBpbiB0aGUgc2FtZSByZW5kZXIgb3IgY29tcHV0ZSBwYXNzIGVuY29kZXIsIGl0cyBsaXN0IG9m
IGludGVybmFsIHVzYWdlcyB3aXRoaW4gb25lIHVzYWdlCisgIHNjb3BlIGNhbiBvbmx5IGJlIGEg
Y29tcGF0aWJsZSB1c2FnZSBsaXN0LmAKKyAgKQorICAucGFyYW1zKHUgPT4gdS5jb21iaW5lKCdp
blJlbmRlclBhc3MnLCBbdHJ1ZSwgZmFsc2VdKS5jb21iaW5lKCdoYXNDb25mbGljdCcsIFt0cnVl
LCBmYWxzZV0pKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyBpblJlbmRlclBhc3Ms
IGhhc0NvbmZsaWN0IH0gPSB0LnBhcmFtczsKKworICAgIGNvbnN0IHRleHR1cmUwID0gdC5kZXZp
Y2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICAgIHVz
YWdlOiBHUFVUZXh0dXJlVXNhZ2UuVEVYVFVSRV9CSU5ESU5HIHwgR1BVVGV4dHVyZVVzYWdlLlNU
T1JBR0VfQklORElORywKKyAgICAgIHNpemU6IFtrVGV4dHVyZVNpemUsIGtUZXh0dXJlU2l6ZSwg
a1RleHR1cmVMYXllcnNdLAorICAgIH0pOworCisgICAgLy8gV2UgYWx3YXlzIGJpbmQgdGhlIGZp
cnN0IGxheWVyIG9mIHRoZSB0ZXh0dXJlIHRvIGJpbmRHcm91cDAuCisgICAgY29uc3QgdGV4dHVy
ZVZpZXcwID0gdGV4dHVyZTAuY3JlYXRlVmlldyh7CisgICAgICBkaW1lbnNpb246ICcyZC1hcnJh
eScsCisgICAgICBiYXNlQXJyYXlMYXllcjogMCwKKyAgICAgIGFycmF5TGF5ZXJDb3VudDogMSwK
KyAgICB9KTsKKworICAgIGNvbnN0IHZpc2liaWxpdHkgPSBpblJlbmRlclBhc3MgPyBHUFVTaGFk
ZXJTdGFnZS5GUkFHTUVOVCA6IEdQVVNoYWRlclN0YWdlLkNPTVBVVEU7CisgICAgLy8gYmluZEdy
b3VwMCBpcyB1c2VkIGJ5IHRoZSBwaXBlbGluZXMsIGFuZCBiaW5kR3JvdXAxIGlzIG5vdCB1c2Vk
IGJ5IHRoZSBwaXBlbGluZXMuCisgICAgY29uc3QgdGV4dHVyZVVzYWdlMCA9IGluUmVuZGVyUGFz
cyA/ICd0ZXh0dXJlJyA6ICdzdG9yYWdlJzsKKyAgICBjb25zdCB0ZXh0dXJlVXNhZ2UxID0gaGFz
Q29uZmxpY3QgPyAoaW5SZW5kZXJQYXNzID8gJ3N0b3JhZ2UnIDogJ3RleHR1cmUnKSA6IHRleHR1
cmVVc2FnZTA7CisgICAgY29uc3QgYmluZEdyb3VwMCA9IHQuY3JlYXRlQmluZEdyb3VwRm9yVGVz
dCh0ZXh0dXJlVmlldzAsIHRleHR1cmVVc2FnZTAsICdmbG9hdCcsIHZpc2liaWxpdHkpOworICAg
IGNvbnN0IGJpbmRHcm91cDEgPSB0LmNyZWF0ZUJpbmRHcm91cEZvclRlc3QodGV4dHVyZVZpZXcw
LCB0ZXh0dXJlVXNhZ2UxLCAnZmxvYXQnLCB2aXNpYmlsaXR5KTsKKworICAgIGNvbnN0IGVuY29k
ZXIgPSB0LmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2RlcigpOworICAgIGNvbnN0IGNvbG9yVGV4
dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoeworICAgICAgZm9ybWF0OiAncmdiYTh1bm9y
bScsCisgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLlJFTkRFUl9BVFRBQ0hNRU5ULAorICAg
ICAgc2l6ZTogW2tUZXh0dXJlU2l6ZSwga1RleHR1cmVTaXplLCAxXSwKKyAgICB9KTsKKworICAg
IGNvbnN0IHBpcGVsaW5lTGF5b3V0ID0gdC5kZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoewor
ICAgICAgYmluZEdyb3VwTGF5b3V0czogW3QuY3JlYXRlQmluZEdyb3VwTGF5b3V0Rm9yVGVzdCh0
ZXh0dXJlVXNhZ2UwLCAnZmxvYXQnLCB2aXNpYmlsaXR5KV0sCisgICAgfSk7CisKKyAgICBpZiAo
aW5SZW5kZXJQYXNzKSB7CisgICAgICBjb25zdCByZW5kZXJQaXBlbGluZSA9IHQuZGV2aWNlLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lKHsKKyAgICAgICAgbGF5b3V0OiBwaXBlbGluZUxheW91dCwKKyAg
ICAgICAgdmVydGV4OiB7CisgICAgICAgICAgbW9kdWxlOiB0LmRldmljZS5jcmVhdGVTaGFkZXJN
b2R1bGUoeworICAgICAgICAgICAgY29kZTogdC5nZXROb09wU2hhZGVyQ29kZSgnVkVSVEVYJyks
CisgICAgICAgICAgfSksCisKKyAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbicsCisgICAgICAg
IH0sCisKKyAgICAgICAgZnJhZ21lbnQ6IHsKKyAgICAgICAgICBtb2R1bGU6IHQuZGV2aWNlLmNy
ZWF0ZVNoYWRlck1vZHVsZSh7CisgICAgICAgICAgICBjb2RlOiBgCisgICAgICAgICAgICAgIEBn
cm91cCgwKSBAYmluZGluZygwKSB2YXIgdGV4dHVyZTAgOiB0ZXh0dXJlXzJkX2FycmF5PGYzMj47
CisgICAgICAgICAgICAgIEBzdGFnZShmcmFnbWVudCkgZm4gbWFpbigpCisgICAgICAgICAgICAg
ICAgLT4gQGxvY2F0aW9uKDApIHZlYzQ8ZjMyPiB7CisgICAgICAgICAgICAgICAgICByZXR1cm4g
dGV4dHVyZUxvYWQodGV4dHVyZTAsIHZlYzI8aTMyPigpLCAwLCAwKTsKKyAgICAgICAgICAgICAg
fWAsCisgICAgICAgICAgfSksCisKKyAgICAgICAgICBlbnRyeVBvaW50OiAnbWFpbicsCisgICAg
ICAgICAgdGFyZ2V0czogW3sgZm9ybWF0OiAncmdiYTh1bm9ybScgfV0sCisgICAgICAgIH0sCisg
ICAgICB9KTsKKworICAgICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBlbmNvZGVyLmJlZ2lu
UmVuZGVyUGFzcyh7CisgICAgICAgIGNvbG9yQXR0YWNobWVudHM6IFsKKyAgICAgICAgICB7Cisg
ICAgICAgICAgICB2aWV3OiBjb2xvclRleHR1cmUuY3JlYXRlVmlldygpLAorICAgICAgICAgICAg
bG9hZE9wOiAnbG9hZCcsCisgICAgICAgICAgICBzdG9yZU9wOiAnc3RvcmUnLAorICAgICAgICAg
IH0sCisgICAgICAgIF0sCisgICAgICB9KTsKKworICAgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0
QmluZEdyb3VwKDAsIGJpbmRHcm91cDApOworICAgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0Qmlu
ZEdyb3VwKDEsIGJpbmRHcm91cDEpOworICAgICAgcmVuZGVyUGFzc0VuY29kZXIuc2V0UGlwZWxp
bmUocmVuZGVyUGlwZWxpbmUpOworICAgICAgcmVuZGVyUGFzc0VuY29kZXIuZHJhdygxKTsKKyAg
ICAgIHJlbmRlclBhc3NFbmNvZGVyLmVuZCgpOworICAgIH0gZWxzZSB7CisgICAgICBjb25zdCBj
b21wdXRlUGlwZWxpbmUgPSB0LmRldmljZS5jcmVhdGVDb21wdXRlUGlwZWxpbmUoeworICAgICAg
ICBsYXlvdXQ6IHBpcGVsaW5lTGF5b3V0LAorICAgICAgICBjb21wdXRlOiB7CisgICAgICAgICAg
bW9kdWxlOiB0LmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeworICAgICAgICAgICAgY29kZTog
YAorICAgICAgICAgICAgQGdyb3VwKDApIEBiaW5kaW5nKDApIHZhciB0ZXh0dXJlMCA6IHRleHR1
cmVfc3RvcmFnZV8yZF9hcnJheTxyZ2JhOHVub3JtLCB3cml0ZT47CisgICAgICAgICAgICBAc3Rh
Z2UoY29tcHV0ZSkgQHdvcmtncm91cF9zaXplKDEpCisgICAgICAgICAgICBmbiBtYWluKCkgewor
ICAgICAgICAgICAgICB0ZXh0dXJlU3RvcmUodGV4dHVyZTAsIHZlYzI8aTMyPigpLCAwLCB2ZWM0
PGYzMj4oKSk7CisgICAgICAgICAgICB9YCwKKyAgICAgICAgICB9KSwKKworICAgICAgICAgIGVu
dHJ5UG9pbnQ6ICdtYWluJywKKyAgICAgICAgfSwKKyAgICAgIH0pOworCisgICAgICBjb25zdCBj
b21wdXRlUGFzc0VuY29kZXIgPSBlbmNvZGVyLmJlZ2luQ29tcHV0ZVBhc3MoKTsKKyAgICAgIGNv
bXB1dGVQYXNzRW5jb2Rlci5zZXRCaW5kR3JvdXAoMCwgYmluZEdyb3VwMCk7CisgICAgICBjb21w
dXRlUGFzc0VuY29kZXIuc2V0QmluZEdyb3VwKDEsIGJpbmRHcm91cDEpOworICAgICAgY29tcHV0
ZVBhc3NFbmNvZGVyLnNldFBpcGVsaW5lKGNvbXB1dGVQaXBlbGluZSk7CisgICAgICBjb21wdXRl
UGFzc0VuY29kZXIuZGlzcGF0Y2goMSk7CisgICAgICBjb21wdXRlUGFzc0VuY29kZXIuZW5kKCk7
CisgICAgfQorCisgICAgLy8gSW4gV2ViR1BVIFNQRUMgKENoYXB0ZXIgMy40LjUsIFN5bmNocm9u
aXphdGlvbik6CisgICAgLy8gVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgdGhlIGZvbGxvd2lu
ZyB1c2FnZSBzY29wZXM6CisgICAgLy8gLSBJbiBhIGNvbXB1dGUgcGFzcywgZWFjaCBkaXNwYXRj
aCBjb21tYW5kIChkaXNwYXRjaFdvcmtncm91cHMoKSBvcgorICAgIC8vICAgZGlzcGF0Y2hXb3Jr
Z3JvdXBzSW5kaXJlY3QoKSkgaXMgb25lIHVzYWdlIHNjb3BlLiBBIHN1YnJlc291cmNlIGlzICJ1
c2VkIiBpbiB0aGUgdXNhZ2UKKyAgICAvLyAgIHNjb3BlIGlmIGl0IGlzIHBvdGVudGlhbGx5IGFj
Y2Vzc2libGUgYnkgdGhlIGNvbW1hbmQuIFN0YXRlLXNldHRpbmcgY29tcHV0ZSBwYXNzIGNvbW1h
bmRzLAorICAgIC8vICAgbGlrZSBzZXRCaW5kR3JvdXAoaW5kZXgsIGJpbmRHcm91cCwgZHluYW1p
Y09mZnNldHMpLCBkbyBub3QgY29udHJpYnV0ZSBkaXJlY3RseSB0byBhIHVzYWdlCisgICAgLy8g
ICBzY29wZS4KKyAgICAvLyAtIE9uZSByZW5kZXIgcGFzcyBpcyBvbmUgdXNhZ2Ugc2NvcGUuIEEg
c3VicmVzb3VyY2UgaXMgInVzZWQiIGluIHRoZSB1c2FnZSBzY29wZSBpZiBpdOKAmXMKKyAgICAv
LyAgIHJlZmVyZW5jZWQgYnkgYW55IChzdGF0ZS1zZXR0aW5nIG9yIG5vbi1zdGF0ZS1zZXR0aW5n
KSBjb21tYW5kLiBGb3IgZXhhbXBsZSwgaW4KKyAgICAvLyAgIHNldEJpbmRHcm91cChpbmRleCwg
YmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0cyksIGV2ZXJ5IHN1YnJlc291cmNlIGluIGJpbmRHcm91
cCBpcyAidXNlZCIgaW4KKyAgICAvLyAgIHRoZSByZW5kZXIgcGFzc+KAmXMgdXNhZ2Ugc2NvcGUu
CisgICAgY29uc3Qgc3VjY2VzcyA9ICFpblJlbmRlclBhc3MgfHwgIWhhc0NvbmZsaWN0OworICAg
IHQuZXhwZWN0VmFsaWRhdGlvbkVycm9yKCgpID0+IHsKKyAgICAgIGVuY29kZXIuZmluaXNoKCk7
CisgICAgfSwgIXN1Y2Nlc3MpOworICB9KTsKKworZy50ZXN0KCdzdWJyZXNvdXJjZXMsdGV4dHVy
ZV91c2FnZXNfaW5fY29weV9hbmRfcmVuZGVyX3Bhc3MnKQorICAuZGVzYygKKyAgICBgCisgIFRl
c3QgdGhhdCB1c2luZyBvbmUgdGV4dHVyZSBzdWJyZXNvdXJjZSBpbiBhIHJlbmRlciBwYXNzIGVu
Y29kZXIgYW5kIGEgY29weSBjb21tYW5kIGlzIGFsd2F5cworICBhbGxvd2VkIGFzIFdlYkdQVSBT
UEVDIChjaGFwdGVyIDMuNC41KSBkZWZpbmVzIHRoYXQgb3V0IG9mIGFueSBwYXNzIGVuY29kZXIs
IGVhY2ggY29tbWFuZCBhbHdheXMKKyAgYmVsb25ncyB0byBvbmUgdXNhZ2Ugc2NvcGUuYAorICAp
CisgIC5wYXJhbXModSA9PgorICAgIHUKKyAgICAgIC5jb21iaW5lKCd1c2FnZTAnLCBbJ2NvcHkt
c3JjJywgJ2NvcHktZHN0JywgJ3RleHR1cmUnLCAnc3RvcmFnZScsICdjb2xvci1hdHRhY2htZW50
J10pCisgICAgICAuY29tYmluZSgndXNhZ2UxJywgWydjb3B5LXNyYycsICdjb3B5LWRzdCcsICd0
ZXh0dXJlJywgJ3N0b3JhZ2UnLCAnY29sb3ItYXR0YWNobWVudCddKQorICAgICAgLmZpbHRlcigK
KyAgICAgICAgKHsgdXNhZ2UwLCB1c2FnZTEgfSkgPT4KKyAgICAgICAgICB1c2FnZTAgPT09ICdj
b3B5LXNyYycgfHwKKyAgICAgICAgICB1c2FnZTAgPT09ICdjb3B5LWRzdCcgfHwKKyAgICAgICAg
ICB1c2FnZTEgPT09ICdjb3B5LXNyYycgfHwKKyAgICAgICAgICB1c2FnZTEgPT09ICdjb3B5LWRz
dCcKKyAgICAgICkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyB1c2FnZTAs
IHVzYWdlMSB9ID0gdC5wYXJhbXM7CisKKyAgICBjb25zdCB0ZXh0dXJlID0gdC5kZXZpY2UuY3Jl
YXRlVGV4dHVyZSh7CisgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICAgIHVzYWdlOgor
ICAgICAgICBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMgfAorICAgICAgICBHUFVUZXh0dXJlVXNh
Z2UuQ09QWV9EU1QgfAorICAgICAgICBHUFVUZXh0dXJlVXNhZ2UuVEVYVFVSRV9CSU5ESU5HIHwK
KyAgICAgICAgR1BVVGV4dHVyZVVzYWdlLlNUT1JBR0VfQklORElORyB8CisgICAgICAgIEdQVVRl
eHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCwKKyAgICAgIHNpemU6IFtrVGV4dHVyZVNpemUs
IGtUZXh0dXJlU2l6ZSwgMV0sCisgICAgfSk7CisKKyAgICBjb25zdCBVc2VUZXh0dXJlT25Db21t
YW5kRW5jb2RlciA9ICh0ZXh0dXJlLCB1c2FnZSwgZW5jb2RlcikgPT4geworICAgICAgc3dpdGNo
ICh1c2FnZSkgeworICAgICAgICBjYXNlICdjb3B5LXNyYyc6IHsKKyAgICAgICAgICBjb25zdCBi
dWZmZXIgPSB0LmRldmljZS5jcmVhdGVCdWZmZXIoeworICAgICAgICAgICAgc2l6ZTogNCwKKyAg
ICAgICAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX0RTVCwKKyAgICAgICAgICB9KTsK
KworICAgICAgICAgIGVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcih7IHRleHR1cmUgfSwgeyBi
dWZmZXIgfSwgWzEsIDEsIDFdKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlICdjb3B5LWRzdCc6IHsKKyAgICAgICAgICBjb25zdCBidWZmZXIgPSB0LmRldmljZS5j
cmVhdGVCdWZmZXIoeworICAgICAgICAgICAgc2l6ZTogNCwKKyAgICAgICAgICAgIHVzYWdlOiBH
UFVCdWZmZXJVc2FnZS5DT1BZX1NSQywKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGVuY29k
ZXIuY29weUJ1ZmZlclRvVGV4dHVyZSh7IGJ1ZmZlciB9LCB7IHRleHR1cmUgfSwgWzEsIDEsIDFd
KTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlICdjb2xvci1hdHRh
Y2htZW50JzogeworICAgICAgICAgIGNvbnN0IHJlbmRlclBhc3NFbmNvZGVyID0gZW5jb2Rlci5i
ZWdpblJlbmRlclBhc3MoeworICAgICAgICAgICAgY29sb3JBdHRhY2htZW50czogW3sgdmlldzog
dGV4dHVyZS5jcmVhdGVWaWV3KCksIGxvYWRPcDogJ2xvYWQnLCBzdG9yZU9wOiAnc3RvcmUnIH1d
LAorICAgICAgICAgIH0pOworCisgICAgICAgICAgcmVuZGVyUGFzc0VuY29kZXIuZW5kKCk7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAndGV4dHVyZSc6CisgICAg
ICAgIGNhc2UgJ3N0b3JhZ2UnOiB7CisgICAgICAgICAgY29uc3QgY29sb3JUZXh0dXJlID0gdC5k
ZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICAgICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywK
KyAgICAgICAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuUkVOREVSX0FUVEFDSE1FTlQsCisg
ICAgICAgICAgICBzaXplOiBba1RleHR1cmVTaXplLCBrVGV4dHVyZVNpemUsIDFdLAorICAgICAg
ICAgIH0pOworCisgICAgICAgICAgY29uc3QgcmVuZGVyUGFzc0VuY29kZXIgPSBlbmNvZGVyLmJl
Z2luUmVuZGVyUGFzcyh7CisgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzOiBbCisgICAgICAg
ICAgICAgIHsgdmlldzogY29sb3JUZXh0dXJlLmNyZWF0ZVZpZXcoKSwgbG9hZE9wOiAnbG9hZCcs
IHN0b3JlT3A6ICdzdG9yZScgfSwKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICBjb25zdCBiaW5kR3JvdXAgPSB0LmNyZWF0ZUJpbmRHcm91cEZvclRlc3QoCisgICAg
ICAgICAgICB0ZXh0dXJlLmNyZWF0ZVZpZXcoeworICAgICAgICAgICAgICBkaW1lbnNpb246ICcy
ZC1hcnJheScsCisgICAgICAgICAgICB9KSwKKworICAgICAgICAgICAgdXNhZ2UsCisgICAgICAg
ICAgICAnZmxvYXQnCisgICAgICAgICAgKTsKKworICAgICAgICAgIHJlbmRlclBhc3NFbmNvZGVy
LnNldEJpbmRHcm91cCgwLCBiaW5kR3JvdXApOworICAgICAgICAgIHJlbmRlclBhc3NFbmNvZGVy
LmVuZCgpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfTsKKyAg
ICBjb25zdCBlbmNvZGVyID0gdC5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgICBV
c2VUZXh0dXJlT25Db21tYW5kRW5jb2Rlcih0ZXh0dXJlLCB1c2FnZTAsIGVuY29kZXIpOworICAg
IFVzZVRleHR1cmVPbkNvbW1hbmRFbmNvZGVyKHRleHR1cmUsIHVzYWdlMSwgZW5jb2Rlcik7Cisg
ICAgdC5leHBlY3RWYWxpZGF0aW9uRXJyb3IoKCkgPT4geworICAgICAgZW5jb2Rlci5maW5pc2go
KTsKKyAgICB9LCBmYWxzZSk7CisgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3N0YXRlL2RldmljZV9sb3N0L2Rlc3Ry
b3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2Fw
aS92YWxpZGF0aW9uL3N0YXRlL2RldmljZV9sb3N0L2Rlc3Ryb3ktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2VmMjJlOWE0MzFhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxp
ZGF0aW9uL3N0YXRlL2RldmljZV9sb3N0L2Rlc3Ryb3ktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEg
QEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9hcGkvdmFsaWRhdGlvbi9zdGF0ZS9kZXZpY2VfbG9zdC9kZXN0cm95Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vc3RhdGUvZGV2aWNl
X2xvc3QvZGVzdHJveS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMDI1ZDVmZmQyMjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3N0YXRlL2RldmljZV9sb3N0L2Rlc3Ryb3ku
aHRtbApAQCAtMCwwICsxLDcgQEAKKworICAgICAgICAgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgICAgICB3aW5k
b3cubG9jYXRpb24uaHJlZiA9ICIvd2ViZ3B1L2N0cy5odHRwcy5odG1sP3E9d2ViZ3B1OmFwaSx2
YWxpZGF0aW9uLHN0YXRlLGRldmljZV9sb3N0LGRlc3Ryb3k6KiI7CisgICAgICAgICAgICAgICAg
PC9zY3JpcHQ+CisgICAgICAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRp
b24vc3RhdGUvZGV2aWNlX2xvc3QvZGVzdHJveS5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3N0YXRlL2RldmljZV9sb3N0L2Rlc3Ry
b3kuc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc1OWU2
ZGNlZDE5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9zdGF0ZS9kZXZpY2VfbG9zdC9kZXN0cm95LnNwZWMuanMK
QEAgLTAsMCArMSw5NTAgQEAKKy8qKgorICogQVVUTy1HRU5FUkFURUQgLSBETyBOT1QgRURJVC4g
U291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cworICoqLyBleHBvcnQgY29uc3Qg
ZGVzY3JpcHRpb24gPSBgCitUZXN0cyBmb3IgZGV2aWNlIGxvc3QgaW5kdWNlZCB2aWEgZGVzdHJv
eS4KKyAgLSBUZXN0cyB0aGF0IHByaW9yIHRvIGRldmljZSBkZXN0cnVjdGlvbiwgdmFsaWQgQVBJ
cyBkbyBub3QgZ2VuZXJhdGUgZXJyb3JzIChjb250cm9sIGNhc2UpLgorICAtIEFmdGVyIGRldmlj
ZSBkZXN0cnVjdGlvbiwgcnVucyB0aGUgc2FtZSBBUElzLiBObyBleHBlY3RlZCBvYnNlcnZhYmxl
IHJlc3VsdHMsIHNvIHRlc3QgY3Jhc2ggb3IgZnV0dXJlIGZhaWx1cmVzIGFyZSB0aGUgb25seSBj
dXJyZW50IGZhaWx1cmUgaW5kaWNhdG9ycy4KK2A7CitpbXBvcnQgeyBtYWtlVGVzdEdyb3VwIH0g
ZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay90ZXN0X2dyb3VwLmpzJzsKK2lt
cG9ydCB7CisgIGFsbEJpbmRpbmdFbnRyaWVzLAorICBiaW5kaW5nVHlwZUluZm8sCisgIGtCaW5k
YWJsZVJlc291cmNlcywKKyAga0J1ZmZlclVzYWdlS2V5cywKKyAga0J1ZmZlclVzYWdlSW5mbywK
KyAga0J1ZmZlclVzYWdlQ29weSwKKyAga0J1ZmZlclVzYWdlQ29weUluZm8sCisgIGtDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMsCisgIGtRdWVyeVR5cGVzLAorICBrVGV4dHVyZVVzYWdlVHlwZSwK
KyAga1RleHR1cmVVc2FnZVR5cGVJbmZvLAorICBrVGV4dHVyZVVzYWdlQ29weSwKKyAga1RleHR1
cmVVc2FnZUNvcHlJbmZvLAorICBrUmVndWxhclRleHR1cmVGb3JtYXRzLAorICBrUmVuZGVyYWJs
ZUNvbG9yVGV4dHVyZUZvcm1hdHMsCisgIGtTaGFkZXJTdGFnZUtleXMsCisgIGtUZXh0dXJlRm9y
bWF0SW5mbywKK30gZnJvbSAnLi4vLi4vLi4vLi4vY2FwYWJpbGl0eV9pbmZvLmpzJzsKKworaW1w
b3J0IHsKKyAgY2FuQ29weUZyb21DYW52YXNDb250ZXh0LAorICBjcmVhdGVDYW52YXMsCisgIGtB
bGxDYW52YXNUeXBlcywKKyAga1ZhbGlkQ2FudmFzQ29udGV4dElkcywKK30gZnJvbSAnLi4vLi4v
Li4vLi4vdXRpbC9jcmVhdGVfZWxlbWVudHMuanMnOworaW1wb3J0IHsgVmFsaWRhdGlvblRlc3Qg
fSBmcm9tICcuLi8uLi92YWxpZGF0aW9uX3Rlc3QuanMnOworCitjb25zdCBrQ29tbWFuZFZhbGlk
YXRpb25TdGFnZXMgPSBbJ2ZpbmlzaCcsICdzdWJtaXQnXTsKKworY2xhc3MgRGV2aWNlRGVzdHJv
eVRlc3RzIGV4dGVuZHMgVmFsaWRhdGlvblRlc3QgeworICAvKioKKyAgICogRXhwZWN0cyB0aGF0
IGBmbmAgZG9lcyBub3QgcHJvZHVjZSBhbnkgZXJyb3JzIGJlZm9yZSB0aGUgZGV2aWNlIGlzIGRl
c3Ryb3llZCwgYW5kIHRoZW4gY2FsbHMKKyAgICogYGZuYCBhZnRlciB0aGUgZGV2aWNlIGlzIGRl
c3Ryb3llZCB3aXRob3V0IGFueSBzcGVjaWZpYyBleHBlY3RhdGlvbi4gSWYgYGF3YWl0TG9zdGAg
aXMgdHJ1ZSwgd2UKKyAgICogYWxzbyB3YWl0IGZvciBkZXZpY2UubG9zdCB0byByZXNvbHZlIGJl
Zm9yZSBleGVjdXRpbmcgYGZuYCBpbiB0aGUgZGVzdHJveSBjYXNlLgorICAgKi8KKyAgYXN5bmMg
ZXhlY3V0ZUFmdGVyRGVzdHJveShmbiwgYXdhaXRMb3N0KSB7CisgICAgdGhpcy5leHBlY3REZXZp
Y2VMb3N0KCdkZXN0cm95ZWQnKTsKKworICAgIHRoaXMuZXhwZWN0VmFsaWRhdGlvbkVycm9yKGZu
LCBmYWxzZSk7CisgICAgdGhpcy5kZXZpY2UuZGVzdHJveSgpOworICAgIGlmIChhd2FpdExvc3Qp
IHsKKyAgICAgIGNvbnN0IGxvc3RJbmZvID0gYXdhaXQgdGhpcy5kZXZpY2UubG9zdDsKKyAgICAg
IHRoaXMuZXhwZWN0KGxvc3RJbmZvLnJlYXNvbiA9PT0gJ2Rlc3Ryb3llZCcpOworICAgIH0KKyAg
ICBmbigpOworICB9CisKKyAgLyoqCisgICAqIEV4cGVjdHMgdGhhdCBlbmNvZGVycyBjYW4gZmlu
aXNoIGFuZCBzdWJtaXQgdGhlIHJlc3VsdGluZyBjb21tYW5kcyBiZWZvcmUgdGhlIGRldmljZSBp
cworICAgKiBkZXN0cm95ZWQsIHRoZW4gcmVwZWF0cyB0aGUgc2FtZSBwcm9jZXNzIGFmdGVyIHRo
ZSBkZXZpY2UgaXMgZGVzdHJveWVkIHdpdGhvdXQgYW55IHNwZWNpZmljCisgICAqIGV4cGVjdGF0
aW9ucy4KKyAgICogVGhlcmUgYXJlIHR3byB2YWxpZCBzdGFnZXM6ICdmaW5pc2gnIGFuZCAnc3Vi
bWl0Jy4KKyAgICogICAnZmluaXNoJzogVGVzdHMgW2VuY29kZSwgZmluaXNoXSBhbmQgW2VuY29k
ZXIsIGRlc3Ryb3ksIGZpbmlzaF0KKyAgICogICAnc3VibWl0JzogVGVzdHMgW2VuY29kZXIsIGZp
bmlzaCwgc3VibWl0XSBhbmQgW2VuY29kZXIsIGZpbmlzaCwgZGVzdHJveSwgc3VibWl0XQorICAg
Ki8KKyAgYXN5bmMgZXhlY3V0ZUNvbW1hbmRzQWZ0ZXJEZXN0cm95KHN0YWdlLCBhd2FpdExvc3Qs
IGVuY29kZXJUeXBlLCBmbikgeworICAgIHRoaXMuZXhwZWN0RGV2aWNlTG9zdCgnZGVzdHJveWVk
Jyk7CisKKyAgICBzd2l0Y2ggKHN0YWdlKSB7CisgICAgICBjYXNlICdmaW5pc2gnOiB7CisgICAg
ICAgIC8vIENvbnRyb2wgY2FzZQorICAgICAgICBmbih0aGlzLmNyZWF0ZUVuY29kZXIoZW5jb2Rl
clR5cGUpKS52YWxpZGF0ZUZpbmlzaCh0cnVlKTsKKyAgICAgICAgLy8gVmFsaWRhdGlvbiBjYXNl
CisgICAgICAgIGNvbnN0IGVuY29kZXIgPSBmbih0aGlzLmNyZWF0ZUVuY29kZXIoZW5jb2RlclR5
cGUpKTsKKyAgICAgICAgYXdhaXQgdGhpcy5leGVjdXRlQWZ0ZXJEZXN0cm95KCgpID0+IHsKKyAg
ICAgICAgICBlbmNvZGVyLmZpbmlzaCgpOworICAgICAgICB9LCBhd2FpdExvc3QpOworICAgICAg
ICBicmVhazsKKyAgICAgIH0KKyAgICAgIGNhc2UgJ3N1Ym1pdCc6IHsKKyAgICAgICAgLy8gQ29u
dHJvbCBjYXNlCisgICAgICAgIGZuKHRoaXMuY3JlYXRlRW5jb2RlcihlbmNvZGVyVHlwZSkpLnZh
bGlkYXRlRmluaXNoQW5kU3VibWl0KHRydWUsIHRydWUpOworICAgICAgICAvLyBWYWxpZGF0aW9u
IGNhc2UKKyAgICAgICAgY29uc3QgY29tbWFuZHMgPSBmbih0aGlzLmNyZWF0ZUVuY29kZXIoZW5j
b2RlclR5cGUpKS52YWxpZGF0ZUZpbmlzaCh0cnVlKTsKKyAgICAgICAgYXdhaXQgdGhpcy5leGVj
dXRlQWZ0ZXJEZXN0cm95KCgpID0+IHsKKyAgICAgICAgICB0aGlzLnF1ZXVlLnN1Ym1pdChbY29t
bWFuZHNdKTsKKyAgICAgICAgfSwgYXdhaXRMb3N0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9
CisgICAgfQorICB9Cit9CisKK2V4cG9ydCBjb25zdCBnID0gbWFrZVRlc3RHcm91cChEZXZpY2VE
ZXN0cm95VGVzdHMpOworCitnLnRlc3QoJ2NyZWF0ZUJ1ZmZlcicpCisgIC5kZXNjKAorICAgIGAK
K1Rlc3RzIGNyZWF0aW5nIGJ1ZmZlcnMgb24gZGVzdHJveWVkIGRldmljZS4gVGVzdHMgdmFsaWQg
Y29tYmluYXRpb25zIG9mOgorICAtIFZhcmlvdXMgdXNhZ2VzCisgIC0gTWFwcGVkIGF0IGNyZWF0
aW9uIG9yIG5vdAorICBgCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdQorICAgICAgLmNvbWJp
bmUoJ3VzYWdlVHlwZScsIGtCdWZmZXJVc2FnZUtleXMpCisgICAgICAuYmVnaW5TdWJjYXNlcygp
CisgICAgICAuY29tYmluZSgndXNhZ2VDb3B5Jywga0J1ZmZlclVzYWdlQ29weSkKKyAgICAgIC5j
b21iaW5lKCdhd2FpdExvc3QnLCBbdHJ1ZSwgZmFsc2VdKQorICAgICAgLmZpbHRlcigoeyB1c2Fn
ZVR5cGUsIHVzYWdlQ29weSB9KSA9PiB7CisgICAgICAgIGlmICh1c2FnZVR5cGUgPT09ICdDT1BZ
X1NSQycgfHwgdXNhZ2VUeXBlID09PSAnQ09QWV9EU1QnKSB7CisgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgICAgIGlmICh1c2FnZVR5cGUgPT09ICdNQVBfUkVBRCcpIHsK
KyAgICAgICAgICByZXR1cm4gdXNhZ2VDb3B5ID09PSAnQ09QWV9OT05FJyB8fCB1c2FnZUNvcHkg
PT09ICdDT1BZX0RTVCc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVzYWdlVHlwZSA9PT0gJ01B
UF9XUklURScpIHsKKyAgICAgICAgICByZXR1cm4gdXNhZ2VDb3B5ID09PSAnQ09QWV9OT05FJyB8
fCB1c2FnZUNvcHkgPT09ICdDT1BZX1NSQyc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICB9KQorICAgICAgLmNvbWJpbmUoJ21hcHBlZEF0Q3JlYXRpb24nLCBbdHJ1ZSwg
ZmFsc2VdKQorICApCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGF3YWl0TG9zdCwg
dXNhZ2VUeXBlLCB1c2FnZUNvcHksIG1hcHBlZEF0Q3JlYXRpb24gfSA9IHQucGFyYW1zOworICAg
IGF3YWl0IHQuZXhlY3V0ZUFmdGVyRGVzdHJveSgoKSA9PiB7CisgICAgICB0LmRldmljZS5jcmVh
dGVCdWZmZXIoeworICAgICAgICBzaXplOiAxNiwKKyAgICAgICAgdXNhZ2U6IGtCdWZmZXJVc2Fn
ZUluZm9bdXNhZ2VUeXBlXSB8IGtCdWZmZXJVc2FnZUNvcHlJbmZvW3VzYWdlQ29weV0sCisgICAg
ICAgIG1hcHBlZEF0Q3JlYXRpb24sCisgICAgICB9KTsKKyAgICB9LCBhd2FpdExvc3QpOworICB9
KTsKKworZy50ZXN0KCdjcmVhdGVUZXh0dXJlLDJkLHVuY29tcHJlc3NlZF9mb3JtYXQnKQorICAu
ZGVzYygKKyAgICBgCitUZXN0cyBjcmVhdGluZyAyZCB1bmNvbXByZXNzZWQgdGV4dHVyZXMgb24g
ZGVzdHJveWVkIGRldmljZS4gVGVzdHMgdmFsaWQgY29tYmluYXRpb25zIG9mOgorICAtIFZhcmlv
dXMgdW5jb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0cworICAtIFZhcmlvdXMgdXNhZ2VzCisgIGAK
KyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1CisgICAgICAuY29tYmluZSgnZm9ybWF0Jywga1Jl
Z3VsYXJUZXh0dXJlRm9ybWF0cykKKyAgICAgIC5iZWdpblN1YmNhc2VzKCkKKyAgICAgIC5jb21i
aW5lKCd1c2FnZVR5cGUnLCBrVGV4dHVyZVVzYWdlVHlwZSkKKyAgICAgIC5jb21iaW5lKCd1c2Fn
ZUNvcHknLCBrVGV4dHVyZVVzYWdlQ29weSkKKyAgICAgIC5jb21iaW5lKCdhd2FpdExvc3QnLCBb
dHJ1ZSwgZmFsc2VdKQorICAgICAgLmZpbHRlcigoeyBmb3JtYXQsIHVzYWdlVHlwZSB9KSA9PiB7
CisgICAgICAgIGNvbnN0IGluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKyAgICAg
ICAgcmV0dXJuICEoCisgICAgICAgICAgKCFpbmZvLnJlbmRlcmFibGUgJiYgdXNhZ2VUeXBlID09
PSAncmVuZGVyJykgfHwKKyAgICAgICAgICAoIWluZm8uc3RvcmFnZSAmJiB1c2FnZVR5cGUgPT09
ICdzdG9yYWdlJykKKyAgICAgICAgKTsKKyAgICAgIH0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4g
eworICAgIGNvbnN0IHsgYXdhaXRMb3N0LCBmb3JtYXQsIHVzYWdlVHlwZSwgdXNhZ2VDb3B5IH0g
PSB0LnBhcmFtczsKKyAgICBjb25zdCB7IGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0IH0gPSBrVGV4
dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKyAgICBhd2FpdCB0LmV4ZWN1dGVBZnRlckRlc3Ryb3ko
KCkgPT4geworICAgICAgdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICAgIHNpemU6IHsg
d2lkdGg6IGJsb2NrV2lkdGgsIGhlaWdodDogYmxvY2tIZWlnaHQgfSwKKyAgICAgICAgdXNhZ2U6
IGtUZXh0dXJlVXNhZ2VUeXBlSW5mb1t1c2FnZVR5cGVdIHwga1RleHR1cmVVc2FnZUNvcHlJbmZv
W3VzYWdlQ29weV0sCisgICAgICAgIGZvcm1hdCwKKyAgICAgIH0pOworICAgIH0sIGF3YWl0TG9z
dCk7CisgIH0pOworCitnLnRlc3QoJ2NyZWF0ZVRleHR1cmUsMmQsY29tcHJlc3NlZF9mb3JtYXQn
KQorICAuZGVzYygKKyAgICBgCitUZXN0cyBjcmVhdGluZyAyZCBjb21wcmVzc2VkIHRleHR1cmVz
IG9uIGRlc3Ryb3llZCBkZXZpY2UuIFRlc3RzIHZhbGlkIGNvbWJpbmF0aW9ucyBvZjoKKyAgLSBW
YXJpb3VzIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXRzCisgIC0gVmFyaW91cyB1c2FnZXMKKyAg
YAorICApCisgIC5wYXJhbXModSA9PgorICAgIHUKKyAgICAgIC5jb21iaW5lKCdmb3JtYXQnLCBr
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRzKQorICAgICAgLmJlZ2luU3ViY2FzZXMoKQorICAgICAg
LmNvbWJpbmUoJ3VzYWdlVHlwZScsIGtUZXh0dXJlVXNhZ2VUeXBlKQorICAgICAgLmNvbWJpbmUo
J3VzYWdlQ29weScsIGtUZXh0dXJlVXNhZ2VDb3B5KQorICAgICAgLmNvbWJpbmUoJ2F3YWl0TG9z
dCcsIFt0cnVlLCBmYWxzZV0pCisgICAgICAuZmlsdGVyKCh7IGZvcm1hdCwgdXNhZ2VUeXBlIH0p
ID0+IHsKKyAgICAgICAgY29uc3QgaW5mbyA9IGtUZXh0dXJlRm9ybWF0SW5mb1tmb3JtYXRdOwor
ICAgICAgICByZXR1cm4gISgKKyAgICAgICAgICAoIWluZm8ucmVuZGVyYWJsZSAmJiB1c2FnZVR5
cGUgPT09ICdyZW5kZXInKSB8fAorICAgICAgICAgICghaW5mby5zdG9yYWdlICYmIHVzYWdlVHlw
ZSA9PT0gJ3N0b3JhZ2UnKQorICAgICAgICApOworICAgICAgfSkKKyAgKQorICAuZm4oYXN5bmMg
dCA9PiB7CisgICAgY29uc3QgeyBhd2FpdExvc3QsIGZvcm1hdCwgdXNhZ2VUeXBlLCB1c2FnZUNv
cHkgfSA9IHQucGFyYW1zOworICAgIGNvbnN0IHsgYmxvY2tXaWR0aCwgYmxvY2tIZWlnaHQsIGZl
YXR1cmUgfSA9IGtUZXh0dXJlRm9ybWF0SW5mb1tmb3JtYXRdOworICAgIGF3YWl0IHQuc2VsZWN0
RGV2aWNlT3JTa2lwVGVzdENhc2UoZmVhdHVyZSk7CisgICAgYXdhaXQgdC5leGVjdXRlQWZ0ZXJE
ZXN0cm95KCgpID0+IHsKKyAgICAgIHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoeworICAgICAgICBz
aXplOiB7IHdpZHRoOiBibG9ja1dpZHRoLCBoZWlnaHQ6IGJsb2NrSGVpZ2h0IH0sCisgICAgICAg
IHVzYWdlOiBrVGV4dHVyZVVzYWdlVHlwZUluZm9bdXNhZ2VUeXBlXSB8IGtUZXh0dXJlVXNhZ2VD
b3B5SW5mb1t1c2FnZUNvcHldLAorICAgICAgICBmb3JtYXQsCisgICAgICB9KTsKKyAgICB9LCBh
d2FpdExvc3QpOworICB9KTsKKworZy50ZXN0KCdjcmVhdGVWaWV3LDJkLHVuY29tcHJlc3NlZF9m
b3JtYXQnKQorICAuZGVzYygKKyAgICBgCitUZXN0cyBjcmVhdGluZyB0ZXh0dXJlIHZpZXdzIG9u
IDJkIHVuY29tcHJlc3NlZCB0ZXh0dXJlcyBmcm9tIGRlc3Ryb3llZCBkZXZpY2UuIFRlc3RzIHZh
bGlkIGNvbWJpbmF0aW9ucyBvZjoKKyAgLSBWYXJpb3VzIHVuY29tcHJlc3NlZCB0ZXh0dXJlIGZv
cm1hdHMKKyAgLSBWYXJpb3VzIHVzYWdlcworICBgCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAg
dQorICAgICAgLmNvbWJpbmUoJ2Zvcm1hdCcsIGtSZWd1bGFyVGV4dHVyZUZvcm1hdHMpCisgICAg
ICAuYmVnaW5TdWJjYXNlcygpCisgICAgICAuY29tYmluZSgndXNhZ2VUeXBlJywga1RleHR1cmVV
c2FnZVR5cGUpCisgICAgICAuY29tYmluZSgndXNhZ2VDb3B5Jywga1RleHR1cmVVc2FnZUNvcHkp
CisgICAgICAuY29tYmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgICAgIC5maWx0
ZXIoKHsgZm9ybWF0LCB1c2FnZVR5cGUgfSkgPT4geworICAgICAgICBjb25zdCBpbmZvID0ga1Rl
eHR1cmVGb3JtYXRJbmZvW2Zvcm1hdF07CisgICAgICAgIHJldHVybiAhKAorICAgICAgICAgICgh
aW5mby5yZW5kZXJhYmxlICYmIHVzYWdlVHlwZSA9PT0gJ3JlbmRlcicpIHx8CisgICAgICAgICAg
KCFpbmZvLnN0b3JhZ2UgJiYgdXNhZ2VUeXBlID09PSAnc3RvcmFnZScpCisgICAgICAgICk7Cisg
ICAgICB9KQorICApCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGF3YWl0TG9zdCwg
Zm9ybWF0LCB1c2FnZVR5cGUsIHVzYWdlQ29weSB9ID0gdC5wYXJhbXM7CisgICAgY29uc3QgeyBi
bG9ja1dpZHRoLCBibG9ja0hlaWdodCB9ID0ga1RleHR1cmVGb3JtYXRJbmZvW2Zvcm1hdF07Cisg
ICAgY29uc3QgdGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoeworICAgICAgc2l6ZTog
eyB3aWR0aDogYmxvY2tXaWR0aCwgaGVpZ2h0OiBibG9ja0hlaWdodCB9LAorICAgICAgdXNhZ2U6
IGtUZXh0dXJlVXNhZ2VUeXBlSW5mb1t1c2FnZVR5cGVdIHwga1RleHR1cmVVc2FnZUNvcHlJbmZv
W3VzYWdlQ29weV0sCisgICAgICBmb3JtYXQsCisgICAgfSk7CisKKyAgICBhd2FpdCB0LmV4ZWN1
dGVBZnRlckRlc3Ryb3koKCkgPT4geworICAgICAgdGV4dHVyZS5jcmVhdGVWaWV3KHsgZm9ybWF0
IH0pOworICAgIH0sIGF3YWl0TG9zdCk7CisgIH0pOworCitnLnRlc3QoJ2NyZWF0ZVZpZXcsMmQs
Y29tcHJlc3NlZF9mb3JtYXQnKQorICAuZGVzYygKKyAgICBgCitUZXN0cyBjcmVhdGluZyB0ZXh0
dXJlIHZpZXdzIG9uIDJkIGNvbXByZXNzZWQgdGV4dHVyZXMgZnJvbSBkZXN0cm95ZWQgZGV2aWNl
LiBUZXN0cyB2YWxpZCBjb21iaW5hdGlvbnMgb2Y6CisgIC0gVmFyaW91cyBjb21wcmVzc2VkIHRl
eHR1cmUgZm9ybWF0cworICAtIFZhcmlvdXMgdXNhZ2VzCisgIGAKKyAgKQorICAucGFyYW1zKHUg
PT4KKyAgICB1CisgICAgICAuY29tYmluZSgnZm9ybWF0Jywga0NvbXByZXNzZWRUZXh0dXJlRm9y
bWF0cykKKyAgICAgIC5iZWdpblN1YmNhc2VzKCkKKyAgICAgIC5jb21iaW5lKCd1c2FnZVR5cGUn
LCBrVGV4dHVyZVVzYWdlVHlwZSkKKyAgICAgIC5jb21iaW5lKCd1c2FnZUNvcHknLCBrVGV4dHVy
ZVVzYWdlQ29weSkKKyAgICAgIC5jb21iaW5lKCdhd2FpdExvc3QnLCBbdHJ1ZSwgZmFsc2VdKQor
ICAgICAgLmZpbHRlcigoeyBmb3JtYXQsIHVzYWdlVHlwZSB9KSA9PiB7CisgICAgICAgIGNvbnN0
IGluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKyAgICAgICAgcmV0dXJuICEoCisg
ICAgICAgICAgKCFpbmZvLnJlbmRlcmFibGUgJiYgdXNhZ2VUeXBlID09PSAncmVuZGVyJykgfHwK
KyAgICAgICAgICAoIWluZm8uc3RvcmFnZSAmJiB1c2FnZVR5cGUgPT09ICdzdG9yYWdlJykKKyAg
ICAgICAgKTsKKyAgICAgIH0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsg
YXdhaXRMb3N0LCBmb3JtYXQsIHVzYWdlVHlwZSwgdXNhZ2VDb3B5IH0gPSB0LnBhcmFtczsKKyAg
ICBjb25zdCB7IGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0LCBmZWF0dXJlIH0gPSBrVGV4dHVyZUZv
cm1hdEluZm9bZm9ybWF0XTsKKyAgICBhd2FpdCB0LnNlbGVjdERldmljZU9yU2tpcFRlc3RDYXNl
KGZlYXR1cmUpOworICAgIGNvbnN0IHRleHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsK
KyAgICAgIHNpemU6IHsgd2lkdGg6IGJsb2NrV2lkdGgsIGhlaWdodDogYmxvY2tIZWlnaHQgfSwK
KyAgICAgIHVzYWdlOiBrVGV4dHVyZVVzYWdlVHlwZUluZm9bdXNhZ2VUeXBlXSB8IGtUZXh0dXJl
VXNhZ2VDb3B5SW5mb1t1c2FnZUNvcHldLAorICAgICAgZm9ybWF0LAorICAgIH0pOworCisgICAg
YXdhaXQgdC5leGVjdXRlQWZ0ZXJEZXN0cm95KCgpID0+IHsKKyAgICAgIHRleHR1cmUuY3JlYXRl
Vmlldyh7IGZvcm1hdCB9KTsKKyAgICB9LCBhd2FpdExvc3QpOworICB9KTsKKworZy50ZXN0KCdj
cmVhdGVTYW1wbGVyJykKKyAgLmRlc2MoCisgICAgYAorVGVzdHMgY3JlYXRpbmcgc2FtcGxlcnMg
b24gZGVzdHJveWVkIGRldmljZS4KKyAgYAorICApCisgIC5wYXJhbXModSA9PiB1LmJlZ2luU3Vi
Y2FzZXMoKS5jb21iaW5lKCdhd2FpdExvc3QnLCBbdHJ1ZSwgZmFsc2VdKSkKKyAgLmZuKGFzeW5j
IHQgPT4geworICAgIGNvbnN0IHsgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBhd2FpdCB0
LmV4ZWN1dGVBZnRlckRlc3Ryb3koKCkgPT4geworICAgICAgdC5kZXZpY2UuY3JlYXRlU2FtcGxl
cigpOworICAgIH0sIGF3YWl0TG9zdCk7CisgIH0pOworCitnLnRlc3QoJ2NyZWF0ZUJpbmRHcm91
cExheW91dCcpCisgIC5kZXNjKAorICAgIGAKK1Rlc3RzIGNyZWF0aW5nIGJpbmQgZ3JvdXAgbGF5
b3V0cyBvbiBkZXN0cm95ZWQgZGV2aWNlLiBUZXN0cyB2YWxpZCBjb21iaW5hdGlvbnMgb2Y6Cisg
IC0gVmFyaW91cyB2YWxpZCBiaW5kaW5nIGVudHJpZXMKKyAgLSBNYXhpbXVtIHNldCBvZiB2aXNp
YmlsaXR5IGZvciBlYWNoIGJpbmRpbmcgZW50cnkKKyAgYAorICApCisgIC5wYXJhbXModSA9Pgor
ICAgIHUuY29tYmluZSgnZW50cnknLCBhbGxCaW5kaW5nRW50cmllcyhmYWxzZSkpLmJlZ2luU3Vi
Y2FzZXMoKS5jb21iaW5lKCdhd2FpdExvc3QnLCBbdHJ1ZSwgZmFsc2VdKQorICApCisgIC5mbihh
c3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGF3YWl0TG9zdCwgZW50cnkgfSA9IHQucGFyYW1zOwor
ICAgIGNvbnN0IHZpc2liaWxpdHkgPSBiaW5kaW5nVHlwZUluZm8oZW50cnkpLnZhbGlkU3RhZ2Vz
OworICAgIGF3YWl0IHQuZXhlY3V0ZUFmdGVyRGVzdHJveSgoKSA9PiB7CisgICAgICB0LmRldmlj
ZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoeworICAgICAgICBlbnRyaWVzOiBbeyBiaW5kaW5nOiAw
LCB2aXNpYmlsaXR5LCAuLi5lbnRyeSB9XSwKKyAgICAgIH0pOworICAgIH0sIGF3YWl0TG9zdCk7
CisgIH0pOworCitnLnRlc3QoJ2NyZWF0ZUJpbmRHcm91cCcpCisgIC5kZXNjKAorICAgIGAKK1Rl
c3RzIGNyZWF0aW5nIGJpbmQgZ3JvdXAgb24gZGVzdHJveWVkIGRldmljZS4gVGVzdHMgdmFsaWQg
Y29tYmluYXRpb25zIG9mOgorICAtIFZhcmlvdXMgYmluZGVkIHJlc291cmNlIHR5cGVzCisgIC0g
VmFyaW91cyB2YWxpZCBiaW5kaW5nIGVudHJpZXMKKyAgLSBNYXhpbXVtIHNldCBvZiB2aXNpYmls
aXR5IGZvciBlYWNoIGJpbmRpbmcgZW50cnkKKyAgYAorICApCisgIC5kZXNjKGBBIGRlc3Ryb3ll
ZCBkZXZpY2Ugc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGNyZWF0ZSBhbnkgdmFsaWQgYmluZCBncm91
cHMuYCkKKyAgLnBhcmFtcyh1ID0+CisgICAgdQorICAgICAgLmNvbWJpbmUoJ3Jlc291cmNlVHlw
ZScsIGtCaW5kYWJsZVJlc291cmNlcykKKyAgICAgIC5jb21iaW5lKCdlbnRyeScsIGFsbEJpbmRp
bmdFbnRyaWVzKGZhbHNlKSkKKyAgICAgIC5maWx0ZXIoKHsgcmVzb3VyY2VUeXBlLCBlbnRyeSB9
KSA9PiB7CisgICAgICAgIGNvbnN0IGluZm8gPSBiaW5kaW5nVHlwZUluZm8oZW50cnkpOworICAg
ICAgICBzd2l0Y2ggKGluZm8ucmVzb3VyY2UpIHsKKyAgICAgICAgICAvLyBFaXRoZXIgdHlwZSBv
ZiBzYW1wbGVyIG1heSBiZSBib3VuZCB0byBhIGZpbHRlcmluZyBzYW1wbGVyIGJpbmRpbmcuCisg
ICAgICAgICAgY2FzZSAnZmlsdFNhbXAnOgorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlVHlw
ZSA9PT0gJ2ZpbHRTYW1wJyB8fCByZXNvdXJjZVR5cGUgPT09ICdub25GaWx0U2FtcCc7CisgICAg
ICAgICAgLy8gQnV0IG9ubHkgbm9uLWZpbHRlcmluZyBzYW1wbGVycyBjYW4gYmUgdXNlZCB3aXRo
IG5vbi1maWx0ZXJpbmcgc2FtcGxlciBiaW5kaW5ncy4KKyAgICAgICAgICBjYXNlICdub25GaWx0
U2FtcCc6CisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VUeXBlID09PSAnbm9uRmlsdFNhbXAn
OworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gaW5mby5yZXNvdXJjZSA9
PT0gcmVzb3VyY2VUeXBlOworICAgICAgICB9CisgICAgICB9KQorICAgICAgLmJlZ2luU3ViY2Fz
ZXMoKQorICAgICAgLmNvbWJpbmUoJ2F3YWl0TG9zdCcsIFt0cnVlLCBmYWxzZV0pCisgICkKKyAg
LmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgYXdhaXRMb3N0LCByZXNvdXJjZVR5cGUsIGVu
dHJ5IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCB2aXNpYmlsaXR5ID0gYmluZGluZ1R5cGVJbmZv
KGVudHJ5KS52YWxpZFN0YWdlczsKKyAgICBjb25zdCBsYXlvdXQgPSB0LmRldmljZS5jcmVhdGVC
aW5kR3JvdXBMYXlvdXQoeworICAgICAgZW50cmllczogW3sgYmluZGluZzogMCwgdmlzaWJpbGl0
eSwgLi4uZW50cnkgfV0sCisgICAgfSk7CisKKyAgICBjb25zdCByZXNvdXJjZSA9IHQuZ2V0Qmlu
ZGluZ1Jlc291cmNlKHJlc291cmNlVHlwZSk7CisgICAgYXdhaXQgdC5leGVjdXRlQWZ0ZXJEZXN0
cm95KCgpID0+IHsKKyAgICAgIHQuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7IGxheW91dCwgZW50
cmllczogW3sgYmluZGluZzogMCwgcmVzb3VyY2UgfV0gfSk7CisgICAgfSwgYXdhaXRMb3N0KTsK
KyAgfSk7CisKK2cudGVzdCgnY3JlYXRlUGlwZWxpbmVMYXlvdXQnKQorICAuZGVzYygKKyAgICBg
CitUZXN0cyBjcmVhdGluZyBwaXBlbGluZSBsYXlvdXRzIG9uIGRlc3Ryb3llZCBkZXZpY2UuIFRl
c3RzIHZhbGlkIGNvbWJpbmF0aW9ucyBvZjoKKyAgLSBWYXJpb3VzIGJpbmQgZ3JvdXBzIHdpdGgg
dmFsaWQgYmluZGluZyBlbnRyaWVzCisgIC0gTWF4aW11bSBzZXQgb2YgdmlzaWJpbGl0eSBmb3Ig
ZWFjaCBiaW5kaW5nIGVudHJ5CisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmNvbWJp
bmUoJ2VudHJ5JywgYWxsQmluZGluZ0VudHJpZXMoZmFsc2UpKS5iZWdpblN1YmNhc2VzKCkuY29t
YmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7
CisgICAgY29uc3QgeyBhd2FpdExvc3QsIGVudHJ5IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCB2
aXNpYmlsaXR5ID0gYmluZGluZ1R5cGVJbmZvKGVudHJ5KS52YWxpZFN0YWdlczsKKyAgICBjb25z
dCBiaW5kR3JvdXBMYXlvdXQgPSB0LmRldmljZS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoeworICAg
ICAgZW50cmllczogW3sgYmluZGluZzogMCwgdmlzaWJpbGl0eSwgLi4uZW50cnkgfV0sCisgICAg
fSk7CisKKyAgICBhd2FpdCB0LmV4ZWN1dGVBZnRlckRlc3Ryb3koKCkgPT4geworICAgICAgdC5k
ZXZpY2UuY3JlYXRlUGlwZWxpbmVMYXlvdXQoeworICAgICAgICBiaW5kR3JvdXBMYXlvdXRzOiBb
YmluZEdyb3VwTGF5b3V0XSwKKyAgICAgIH0pOworICAgIH0sIGF3YWl0TG9zdCk7CisgIH0pOwor
CitnLnRlc3QoJ2NyZWF0ZVNoYWRlck1vZHVsZScpCisgIC5kZXNjKAorICAgIGAKK1Rlc3RzIGNy
ZWF0aW5nIHNoYWRlciBtb2R1bGVzIG9uIGRlc3Ryb3llZCBkZXZpY2UuCisgIC0gVGVzdHMgYWxs
IHNoYWRlciBzdGFnZXM6IHZlcnRleCwgZnJhZ21lbnQsIGNvbXB1dGUKKyAgYAorICApCisgIC5w
YXJhbXModSA9PgorICAgIHUuY29tYmluZSgnc3RhZ2UnLCBrU2hhZGVyU3RhZ2VLZXlzKS5iZWdp
blN1YmNhc2VzKCkuY29tYmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgKQorICAu
Zm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyBhd2FpdExvc3QsIHN0YWdlIH0gPSB0LnBhcmFt
czsKKyAgICBhd2FpdCB0LmV4ZWN1dGVBZnRlckRlc3Ryb3koKCkgPT4geworICAgICAgdC5kZXZp
Y2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogdC5nZXROb09wU2hhZGVyQ29kZShzdGFnZSkg
fSk7CisgICAgfSwgYXdhaXRMb3N0KTsKKyAgfSk7CisKK2cudGVzdCgnY3JlYXRlQ29tcHV0ZVBp
cGVsaW5lJykKKyAgLmRlc2MoCisgICAgYAorVGVzdHMgY3JlYXRpbmcgY29tcHV0ZSBwaXBlbGlu
ZSBvbiBkZXN0cm95ZWQgZGV2aWNlLgorICAtIFRlc3RzIHdpdGggYSB2YWxpZCBuby1vcCBjb21w
dXRlIHNoYWRlcgorICBgCisgICkKKyAgLnBhcmFtcyh1ID0+IHUuYmVnaW5TdWJjYXNlcygpLmNv
bWJpbmUoJ2F3YWl0TG9zdCcsIFt0cnVlLCBmYWxzZV0pKQorICAuZm4oYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgeyBhd2FpdExvc3QgfSA9IHQucGFyYW1zOworICAgIGNvbnN0IGNTaGFkZXIgPSB0
LmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiB0LmdldE5vT3BTaGFkZXJDb2RlKCdD
T01QVVRFJykgfSk7CisgICAgYXdhaXQgdC5leGVjdXRlQWZ0ZXJEZXN0cm95KCgpID0+IHsKKyAg
ICAgIHQuZGV2aWNlLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSh7CisgICAgICAgIGNvbXB1dGU6IHsg
bW9kdWxlOiBjU2hhZGVyLCBlbnRyeVBvaW50OiAnbWFpbicgfSwKKyAgICAgIH0pOworICAgIH0s
IGF3YWl0TG9zdCk7CisgIH0pOworCitnLnRlc3QoJ2NyZWF0ZVJlbmRlclBpcGVsaW5lJykKKyAg
LmRlc2MoCisgICAgYAorVGVzdHMgY3JlYXRpbmcgcmVuZGVyIHBpcGVsaW5lIG9uIGRlc3Ryb3ll
ZCBkZXZpY2UuCisgIC0gVGVzdHMgd2l0aCB2YWxpZCBuby1vcCB2ZXJ0ZXggYW5kIGZyYWdtZW50
IHNoYWRlcnMKKyAgYAorICApCisgIC5wYXJhbXModSA9PiB1LmJlZ2luU3ViY2FzZXMoKS5jb21i
aW5lKCdhd2FpdExvc3QnLCBbdHJ1ZSwgZmFsc2VdKSkKKyAgLmZuKGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHsgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCB2U2hhZGVyID0gdC5k
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogdC5nZXROb09wU2hhZGVyQ29kZSgnVkVS
VEVYJykgfSk7CisgICAgY29uc3QgZlNoYWRlciA9IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVs
ZSh7IGNvZGU6IHQuZ2V0Tm9PcFNoYWRlckNvZGUoJ0ZSQUdNRU5UJykgfSk7CisgICAgYXdhaXQg
dC5leGVjdXRlQWZ0ZXJEZXN0cm95KCgpID0+IHsKKyAgICAgIHQuZGV2aWNlLmNyZWF0ZVJlbmRl
clBpcGVsaW5lKHsKKyAgICAgICAgdmVydGV4OiB7IG1vZHVsZTogdlNoYWRlciwgZW50cnlQb2lu
dDogJ21haW4nIH0sCisgICAgICAgIGZyYWdtZW50OiB7CisgICAgICAgICAgbW9kdWxlOiBmU2hh
ZGVyLAorICAgICAgICAgIGVudHJ5UG9pbnQ6ICdtYWluJywKKyAgICAgICAgICB0YXJnZXRzOiBb
eyBmb3JtYXQ6ICdyZ2JhOHVub3JtJywgd3JpdGVNYXNrOiAwIH1dLAorICAgICAgICB9LAorICAg
ICAgfSk7CisgICAgfSwgYXdhaXRMb3N0KTsKKyAgfSk7CisKK2cudGVzdCgnY3JlYXRlQ29tbWFu
ZEVuY29kZXInKQorICAuZGVzYygKKyAgICBgCitUZXN0cyBjcmVhdGluZyBjb21tYW5kIGVuY29k
ZXJzIG9uIGRlc3Ryb3llZCBkZXZpY2UuCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4gdS5iZWdp
blN1YmNhc2VzKCkuY29tYmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkpCisgIC5mbihh
c3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGF3YWl0TG9zdCB9ID0gdC5wYXJhbXM7CisgICAgYXdh
aXQgdC5leGVjdXRlQWZ0ZXJEZXN0cm95KCgpID0+IHsKKyAgICAgIHQuZGV2aWNlLmNyZWF0ZUNv
bW1hbmRFbmNvZGVyKCk7CisgICAgfSwgYXdhaXRMb3N0KTsKKyAgfSk7CisKK2cudGVzdCgnY3Jl
YXRlUmVuZGVyQnVuZGxlRW5jb2RlcicpCisgIC5kZXNjKAorICAgIGAKK1Rlc3RzIGNyZWF0aW5n
IHJlbmRlciBidW5kbGUgZW5jb2RlcnMgb24gZGVzdHJveWVkIGRldmljZS4KKyAgLSBUZXN0cyB2
YXJpb3VzIHJlbmRlcmFibGUgdGV4dHVyZSBjb2xvciBmb3JtYXRzCisgIGAKKyAgKQorICAucGFy
YW1zKHUgPT4KKyAgICB1CisgICAgICAuY29tYmluZSgnZm9ybWF0Jywga1JlbmRlcmFibGVDb2xv
clRleHR1cmVGb3JtYXRzKQorICAgICAgLmJlZ2luU3ViY2FzZXMoKQorICAgICAgLmNvbWJpbmUo
J2F3YWl0TG9zdCcsIFt0cnVlLCBmYWxzZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAg
IGNvbnN0IHsgYXdhaXRMb3N0LCBmb3JtYXQgfSA9IHQucGFyYW1zOworICAgIGF3YWl0IHQuZXhl
Y3V0ZUFmdGVyRGVzdHJveSgoKSA9PiB7CisgICAgICB0LmRldmljZS5jcmVhdGVSZW5kZXJCdW5k
bGVFbmNvZGVyKHsgY29sb3JGb3JtYXRzOiBbZm9ybWF0XSB9KTsKKyAgICB9LCBhd2FpdExvc3Qp
OworICB9KTsKKworZy50ZXN0KCdjcmVhdGVRdWVyeVNldCcpCisgIC5kZXNjKAorICAgIGAKK1Rl
c3RzIGNyZWF0aW5nIHF1ZXJ5IHNldHMgb24gZGVzdHJveWVkIGRldmljZS4KKyAgLSBUZXN0cyB2
YXJpb3VzIHF1ZXJ5IHNldCB0eXBlcworICBgCisgICkKKyAgLnBhcmFtcyh1ID0+IHUuY29tYmlu
ZSgndHlwZScsIGtRdWVyeVR5cGVzKS5iZWdpblN1YmNhc2VzKCkuY29tYmluZSgnYXdhaXRMb3N0
JywgW3RydWUsIGZhbHNlXSkpCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGF3YWl0
TG9zdCwgdHlwZSB9ID0gdC5wYXJhbXM7CisgICAgYXdhaXQgdC5zZWxlY3REZXZpY2VGb3JRdWVy
eVR5cGVPclNraXBUZXN0Q2FzZSh0eXBlKTsKKyAgICBhd2FpdCB0LmV4ZWN1dGVBZnRlckRlc3Ry
b3koKCkgPT4geworICAgICAgdC5kZXZpY2UuY3JlYXRlUXVlcnlTZXQoeyB0eXBlLCBjb3VudDog
NCB9KTsKKyAgICB9LCBhd2FpdExvc3QpOworICB9KTsKKworZy50ZXN0KCdjb21tYW5kLGNvcHlC
dWZmZXJUb0J1ZmZlcicpCisgIC5kZXNjKAorICAgIGAKK1Rlc3RzIGNvcHlCdWZmZXJUb0J1ZmZl
ciBjb21tYW5kIHdpdGggdmFyaW91cyB1bmNvbXByZXNzZWQgZm9ybWF0cyBvbiBkZXN0cm95ZWQg
ZGV2aWNlLgorICBgCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdS5iZWdpblN1YmNhc2VzKCku
Y29tYmluZSgnc3RhZ2UnLCBrQ29tbWFuZFZhbGlkYXRpb25TdGFnZXMpLmNvbWJpbmUoJ2F3YWl0
TG9zdCcsIFt0cnVlLCBmYWxzZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0
IHsgc3RhZ2UsIGF3YWl0TG9zdCB9ID0gdC5wYXJhbXM7CisgICAgY29uc3Qga0J1ZmZlclNpemUg
PSAxNjsKKyAgICBjb25zdCBzcmMgPSB0LmRldmljZS5jcmVhdGVCdWZmZXIoeworICAgICAgc2l6
ZToga0J1ZmZlclNpemUsCisgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMsCisg
ICAgfSk7CisKKyAgICBjb25zdCBkc3QgPSB0LmRldmljZS5jcmVhdGVCdWZmZXIoeworICAgICAg
c2l6ZToga0J1ZmZlclNpemUsCisgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9EU1Qs
CisgICAgfSk7CisKKyAgICBhd2FpdCB0LmV4ZWN1dGVDb21tYW5kc0FmdGVyRGVzdHJveShzdGFn
ZSwgYXdhaXRMb3N0LCAnbm9uLXBhc3MnLCBtYWtlciA9PiB7CisgICAgICBtYWtlci5lbmNvZGVy
LmNvcHlCdWZmZXJUb0J1ZmZlcihzcmMsIDAsIGRzdCwgMCwga0J1ZmZlclNpemUpOworICAgICAg
cmV0dXJuIG1ha2VyOworICAgIH0pOworICB9KTsKKworZy50ZXN0KCdjb21tYW5kLGNvcHlCdWZm
ZXJUb1RleHR1cmUnKQorICAuZGVzYygKKyAgICBgCitUZXN0cyBjb3B5QnVmZmVyVG9UZXh0dXJl
IGNvbW1hbmQgb24gZGVzdHJveWVkIGRldmljZS4KKyAgLSBUZXN0cyBmaW5pc2hpbmcgZW5jb2Rp
bmcgb24gZGVzdHJveWVkIGRldmljZQorICAtIFRlc3RzIHN1Ym1pdHRpbmcgY29tbWFuZCBvbiBk
ZXN0cm95ZWQgZGV2aWNlCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmJlZ2luU3Vi
Y2FzZXMoKS5jb21iaW5lKCdzdGFnZScsIGtDb21tYW5kVmFsaWRhdGlvblN0YWdlcykuY29tYmlu
ZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgeyBzdGFnZSwgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCBmb3Jt
YXQgPSAncmdiYTMydWludCc7CisgICAgY29uc3QgeyBieXRlc1BlckJsb2NrLCBibG9ja1dpZHRo
LCBibG9ja0hlaWdodCB9ID0ga1RleHR1cmVGb3JtYXRJbmZvW2Zvcm1hdF07CisgICAgY29uc3Qg
c3JjID0geworICAgICAgYnVmZmVyOiB0LmRldmljZS5jcmVhdGVCdWZmZXIoeworICAgICAgICBz
aXplOiBieXRlc1BlckJsb2NrLAorICAgICAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9T
UkMsCisgICAgICB9KSwKKyAgICB9OworCisgICAgY29uc3QgZHN0ID0geworICAgICAgdGV4dHVy
ZTogdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICAgIHNpemU6IHsgd2lkdGg6IGJsb2Nr
V2lkdGgsIGhlaWdodDogYmxvY2tIZWlnaHQgfSwKKyAgICAgICAgdXNhZ2U6IEdQVVRleHR1cmVV
c2FnZS5DT1BZX0RTVCwKKyAgICAgICAgZm9ybWF0LAorICAgICAgfSksCisgICAgfTsKKworICAg
IGNvbnN0IGNvcHlTaXplID0geyB3aWR0aDogYmxvY2tXaWR0aCwgaGVpZ2h0OiBibG9ja0hlaWdo
dCB9OworICAgIGF3YWl0IHQuZXhlY3V0ZUNvbW1hbmRzQWZ0ZXJEZXN0cm95KHN0YWdlLCBhd2Fp
dExvc3QsICdub24tcGFzcycsIG1ha2VyID0+IHsKKyAgICAgIG1ha2VyLmVuY29kZXIuY29weUJ1
ZmZlclRvVGV4dHVyZShzcmMsIGRzdCwgY29weVNpemUpOworICAgICAgcmV0dXJuIG1ha2VyOwor
ICAgIH0pOworICB9KTsKKworZy50ZXN0KCdjb21tYW5kLGNvcHlUZXh0dXJlVG9CdWZmZXInKQor
ICAuZGVzYygKKyAgICBgCitUZXN0cyBjb3B5VGV4dHVyZVRvQnVmZmVyIGNvbW1hbmQgb24gZGVz
dHJveWVkIGRldmljZS4KKyAgLSBUZXN0cyBmaW5pc2hpbmcgZW5jb2Rpbmcgb24gZGVzdHJveWVk
IGRldmljZQorICAtIFRlc3RzIHN1Ym1pdHRpbmcgY29tbWFuZCBvbiBkZXN0cm95ZWQgZGV2aWNl
CisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmJlZ2luU3ViY2FzZXMoKS5jb21iaW5l
KCdzdGFnZScsIGtDb21tYW5kVmFsaWRhdGlvblN0YWdlcykuY29tYmluZSgnYXdhaXRMb3N0Jywg
W3RydWUsIGZhbHNlXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyBzdGFn
ZSwgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCBmb3JtYXQgPSAncmdiYTMydWlu
dCc7CisgICAgY29uc3QgeyBieXRlc1BlckJsb2NrLCBibG9ja1dpZHRoLCBibG9ja0hlaWdodCB9
ID0ga1RleHR1cmVGb3JtYXRJbmZvW2Zvcm1hdF07CisgICAgY29uc3Qgc3JjID0geworICAgICAg
dGV4dHVyZTogdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICAgIHNpemU6IHsgd2lkdGg6
IGJsb2NrV2lkdGgsIGhlaWdodDogYmxvY2tIZWlnaHQgfSwKKyAgICAgICAgdXNhZ2U6IEdQVVRl
eHR1cmVVc2FnZS5DT1BZX1NSQywKKyAgICAgICAgZm9ybWF0LAorICAgICAgfSksCisgICAgfTsK
KworICAgIGNvbnN0IGRzdCA9IHsKKyAgICAgIGJ1ZmZlcjogdC5kZXZpY2UuY3JlYXRlQnVmZmVy
KHsKKyAgICAgICAgc2l6ZTogYnl0ZXNQZXJCbG9jaywKKyAgICAgICAgdXNhZ2U6IEdQVUJ1ZmZl
clVzYWdlLkNPUFlfRFNULAorICAgICAgfSksCisgICAgfTsKKworICAgIGNvbnN0IGNvcHlTaXpl
ID0geyB3aWR0aDogYmxvY2tXaWR0aCwgaGVpZ2h0OiBibG9ja0hlaWdodCB9OworICAgIGF3YWl0
IHQuZXhlY3V0ZUNvbW1hbmRzQWZ0ZXJEZXN0cm95KHN0YWdlLCBhd2FpdExvc3QsICdub24tcGFz
cycsIG1ha2VyID0+IHsKKyAgICAgIG1ha2VyLmVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcihz
cmMsIGRzdCwgY29weVNpemUpOworICAgICAgcmV0dXJuIG1ha2VyOworICAgIH0pOworICB9KTsK
KworZy50ZXN0KCdjb21tYW5kLGNvcHlUZXh0dXJlVG9UZXh0dXJlJykKKyAgLmRlc2MoCisgICAg
YAorVGVzdHMgY29weVRleHR1cmVUb1RleHR1cmUgY29tbWFuZCBvbiBkZXN0cm95ZWQgZGV2aWNl
LgorICAtIFRlc3RzIGZpbmlzaGluZyBlbmNvZGluZyBvbiBkZXN0cm95ZWQgZGV2aWNlCisgIC0g
VGVzdHMgc3VibWl0dGluZyBjb21tYW5kIG9uIGRlc3Ryb3llZCBkZXZpY2UKKyAgYAorICApCisg
IC5wYXJhbXModSA9PgorICAgIHUuYmVnaW5TdWJjYXNlcygpLmNvbWJpbmUoJ3N0YWdlJywga0Nv
bW1hbmRWYWxpZGF0aW9uU3RhZ2VzKS5jb21iaW5lKCdhd2FpdExvc3QnLCBbdHJ1ZSwgZmFsc2Vd
KQorICApCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB7IHN0YWdlLCBhd2FpdExvc3Qg
fSA9IHQucGFyYW1zOworICAgIGNvbnN0IGZvcm1hdCA9ICdyZ2JhMzJ1aW50JzsKKyAgICBjb25z
dCB7IGJsb2NrV2lkdGgsIGJsb2NrSGVpZ2h0IH0gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0
XTsKKyAgICBjb25zdCBzcmMgPSB7CisgICAgICB0ZXh0dXJlOiB0LmRldmljZS5jcmVhdGVUZXh0
dXJlKHsKKyAgICAgICAgc2l6ZTogeyB3aWR0aDogYmxvY2tXaWR0aCwgaGVpZ2h0OiBibG9ja0hl
aWdodCB9LAorICAgICAgICB1c2FnZTogR1BVVGV4dHVyZVVzYWdlLkNPUFlfU1JDLAorICAgICAg
ICBmb3JtYXQsCisgICAgICB9KSwKKyAgICB9OworCisgICAgY29uc3QgZHN0ID0geworICAgICAg
dGV4dHVyZTogdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CisgICAgICAgIHNpemU6IHsgd2lkdGg6
IGJsb2NrV2lkdGgsIGhlaWdodDogYmxvY2tIZWlnaHQgfSwKKyAgICAgICAgdXNhZ2U6IEdQVUJ1
ZmZlclVzYWdlLkNPUFlfRFNULAorICAgICAgICBmb3JtYXQsCisgICAgICB9KSwKKyAgICB9Owor
CisgICAgY29uc3QgY29weVNpemUgPSB7IHdpZHRoOiBibG9ja1dpZHRoLCBoZWlnaHQ6IGJsb2Nr
SGVpZ2h0IH07CisgICAgYXdhaXQgdC5leGVjdXRlQ29tbWFuZHNBZnRlckRlc3Ryb3koc3RhZ2Us
IGF3YWl0TG9zdCwgJ25vbi1wYXNzJywgbWFrZXIgPT4geworICAgICAgbWFrZXIuZW5jb2Rlci5j
b3B5VGV4dHVyZVRvVGV4dHVyZShzcmMsIGRzdCwgY29weVNpemUpOworICAgICAgcmV0dXJuIG1h
a2VyOworICAgIH0pOworICB9KTsKKworZy50ZXN0KCdjb21tYW5kLGNsZWFyQnVmZmVyJykKKyAg
LmRlc2MoCisgICAgYAorVGVzdHMgZW5jb2RpbmcgYW5kIGZpbmlzaGluZyBhIGNsZWFyQnVmZmVy
IGNvbW1hbmQgb24gZGVzdHJveWVkIGRldmljZS4KKyAgLSBUZXN0cyBmaW5pc2hpbmcgZW5jb2Rp
bmcgb24gZGVzdHJveWVkIGRldmljZQorICAtIFRlc3RzIHN1Ym1pdHRpbmcgY29tbWFuZCBvbiBk
ZXN0cm95ZWQgZGV2aWNlCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmJlZ2luU3Vi
Y2FzZXMoKS5jb21iaW5lKCdzdGFnZScsIGtDb21tYW5kVmFsaWRhdGlvblN0YWdlcykuY29tYmlu
ZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgeyBzdGFnZSwgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCBrQnVm
ZmVyU2l6ZSA9IDE2OworICAgIGNvbnN0IGJ1ZmZlciA9IHQuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7
CisgICAgICBzaXplOiBrQnVmZmVyU2l6ZSwKKyAgICAgIHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5D
T1BZX1NSQywKKyAgICB9KTsKKworICAgIGF3YWl0IHQuZXhlY3V0ZUNvbW1hbmRzQWZ0ZXJEZXN0
cm95KHN0YWdlLCBhd2FpdExvc3QsICdub24tcGFzcycsIG1ha2VyID0+IHsKKyAgICAgIG1ha2Vy
LmVuY29kZXIuY2xlYXJCdWZmZXIoYnVmZmVyLCAwLCBrQnVmZmVyU2l6ZSk7CisgICAgICByZXR1
cm4gbWFrZXI7CisgICAgfSk7CisgIH0pOworCitnLnRlc3QoJ2NvbW1hbmQsd3JpdGVUaW1lc3Rh
bXAnKQorICAuZGVzYygKKyAgICBgCitUZXN0cyBlbmNvZGluZyBhbmQgZmluaXNoaW5nIGEgd3Jp
dGVUaW1lc3RhbXAgY29tbWFuZCBvbiBkZXN0cm95ZWQgZGV2aWNlLgorICAtIFRlc3RzIGZpbmlz
aGluZyBlbmNvZGluZyBvbiBkZXN0cm95ZWQgZGV2aWNlCisgIC0gVGVzdHMgc3VibWl0dGluZyBj
b21tYW5kIG9uIGRlc3Ryb3llZCBkZXZpY2UKKyAgYAorICApCisgIC5wYXJhbXModSA9PgorICAg
IHUKKyAgICAgIC5jb21iaW5lKCd0eXBlJywga1F1ZXJ5VHlwZXMpCisgICAgICAuYmVnaW5TdWJj
YXNlcygpCisgICAgICAuY29tYmluZSgnc3RhZ2UnLCBrQ29tbWFuZFZhbGlkYXRpb25TdGFnZXMp
CisgICAgICAuY29tYmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgKQorICAuZm4o
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyB0eXBlLCBzdGFnZSwgYXdhaXRMb3N0IH0gPSB0LnBh
cmFtczsKKyAgICBhd2FpdCB0LnNlbGVjdERldmljZUZvclF1ZXJ5VHlwZU9yU2tpcFRlc3RDYXNl
KHR5cGUpOworICAgIGNvbnN0IHF1ZXJ5U2V0ID0gdC5kZXZpY2UuY3JlYXRlUXVlcnlTZXQoeyB0
eXBlLCBjb3VudDogMiB9KTsKKyAgICBhd2FpdCB0LmV4ZWN1dGVDb21tYW5kc0FmdGVyRGVzdHJv
eShzdGFnZSwgYXdhaXRMb3N0LCAnbm9uLXBhc3MnLCBtYWtlciA9PiB7CisgICAgICBtYWtlci5l
bmNvZGVyLndyaXRlVGltZXN0YW1wKHF1ZXJ5U2V0LCAwKTsKKyAgICAgIHJldHVybiBtYWtlcjsK
KyAgICB9KTsKKyAgfSk7CisKK2cudGVzdCgnY29tbWFuZCxyZXNvbHZlUXVlcnlTZXQnKQorICAu
ZGVzYygKKyAgICBgCitUZXN0cyBlbmNvZGluZyBhbmQgZmluaXNoaW5nIGEgcmVzb2x2ZVF1ZXJ5
U2V0IGNvbW1hbmQgb24gZGVzdHJveWVkIGRldmljZS4KKyAgLSBUZXN0cyBmaW5pc2hpbmcgZW5j
b2Rpbmcgb24gZGVzdHJveWVkIGRldmljZQorICAtIFRlc3RzIHN1Ym1pdHRpbmcgY29tbWFuZCBv
biBkZXN0cm95ZWQgZGV2aWNlCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmJlZ2lu
U3ViY2FzZXMoKS5jb21iaW5lKCdzdGFnZScsIGtDb21tYW5kVmFsaWRhdGlvblN0YWdlcykuY29t
YmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7
CisgICAgY29uc3QgeyBzdGFnZSwgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCBr
UXVlcnlDb3VudCA9IDI7CisgICAgY29uc3QgcXVlcnlTZXQgPSB0LmNyZWF0ZVF1ZXJ5U2V0V2l0
aFN0YXRlKCd2YWxpZCcpOworICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gdC5jcmVhdGVCdWZmZXJX
aXRoU3RhdGUoJ3ZhbGlkJywgeworICAgICAgc2l6ZToga1F1ZXJ5Q291bnQgKiA4LAorICAgICAg
dXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlFVRVJZX1JFU09MVkUsCisgICAgfSk7CisKKyAgICBhd2Fp
dCB0LmV4ZWN1dGVDb21tYW5kc0FmdGVyRGVzdHJveShzdGFnZSwgYXdhaXRMb3N0LCAnbm9uLXBh
c3MnLCBtYWtlciA9PiB7CisgICAgICBtYWtlci5lbmNvZGVyLnJlc29sdmVRdWVyeVNldChxdWVy
eVNldCwgMCwgMSwgZGVzdGluYXRpb24sIDApOworICAgICAgcmV0dXJuIG1ha2VyOworICAgIH0p
OworICB9KTsKKworZy50ZXN0KCdjb21tYW5kLGNvbXB1dGVQYXNzLGRpc3BhdGNoJykKKyAgLmRl
c2MoCisgICAgYAorVGVzdHMgZW5jb2RpbmcgYW5kIGRpc3BhdGNoaW5nIGEgc2ltcGxlIHZhbGlk
IGNvbXB1dGUgcGFzcyBvbiBkZXN0cm95ZWQgZGV2aWNlLgorICAtIEJpbmRzIHZhbGlkIHBpcGVs
aW5lIGFuZCBiaW5kZ3JvdXBzLCB0aGVuIGRpc3BhdGNoZXMKKyAgLSBUZXN0cyBmaW5pc2hpbmcg
ZW5jb2Rpbmcgb24gZGVzdHJveWVkIGRldmljZQorICAtIFRlc3RzIHN1Ym1pdHRpbmcgY29tbWFu
ZCBvbiBkZXN0cm95ZWQgZGV2aWNlCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmJl
Z2luU3ViY2FzZXMoKS5jb21iaW5lKCdzdGFnZScsIGtDb21tYW5kVmFsaWRhdGlvblN0YWdlcyku
Y29tYmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9
PiB7CisgICAgY29uc3QgeyBzdGFnZSwgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBjb25z
dCBjU2hhZGVyID0gdC5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsgY29kZTogdC5nZXROb09w
U2hhZGVyQ29kZSgnQ09NUFVURScpIH0pOworICAgIGNvbnN0IHBpcGVsaW5lID0gdC5kZXZpY2Uu
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKKyAgICAgIGNvbXB1dGU6IHsgbW9kdWxlOiBjU2hhZGVy
LCBlbnRyeVBvaW50OiAnbWFpbicgfSwKKyAgICB9KTsKKworICAgIGF3YWl0IHQuZXhlY3V0ZUNv
bW1hbmRzQWZ0ZXJEZXN0cm95KHN0YWdlLCBhd2FpdExvc3QsICdjb21wdXRlIHBhc3MnLCBtYWtl
ciA9PiB7CisgICAgICBtYWtlci5lbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKKyAgICAg
IG1ha2VyLmVuY29kZXIuZGlzcGF0Y2goMSk7CisgICAgICByZXR1cm4gbWFrZXI7CisgICAgfSk7
CisgIH0pOworCitnLnRlc3QoJ2NvbW1hbmQscmVuZGVyUGFzcyxkcmF3JykKKyAgLmRlc2MoCisg
ICAgYAorVGVzdHMgZW5jb2RpbmcgYW5kIGZpbmlzaGluZyBhIHNpbXBsZSB2YWxpZCByZW5kZXIg
cGFzcyBvbiBkZXN0cm95ZWQgZGV2aWNlLgorICAtIEJpbmRzIHZhbGlkIHBpcGVsaW5lIGFuZCBi
aW5kZ3JvdXBzLCB0aGVuIGRyYXdzCisgIC0gVGVzdHMgZmluaXNoaW5nIGVuY29kaW5nIG9uIGRl
c3Ryb3llZCBkZXZpY2UKKyAgLSBUZXN0cyBzdWJtaXR0aW5nIGNvbW1hbmQgb24gZGVzdHJveWVk
IGRldmljZQorICBgCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdS5iZWdpblN1YmNhc2VzKCku
Y29tYmluZSgnc3RhZ2UnLCBrQ29tbWFuZFZhbGlkYXRpb25TdGFnZXMpLmNvbWJpbmUoJ2F3YWl0
TG9zdCcsIFt0cnVlLCBmYWxzZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0
IHsgc3RhZ2UsIGF3YWl0TG9zdCB9ID0gdC5wYXJhbXM7CisgICAgY29uc3QgdlNoYWRlciA9IHQu
ZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7IGNvZGU6IHQuZ2V0Tm9PcFNoYWRlckNvZGUoJ1ZF
UlRFWCcpIH0pOworICAgIGNvbnN0IGZTaGFkZXIgPSB0LmRldmljZS5jcmVhdGVTaGFkZXJNb2R1
bGUoeyBjb2RlOiB0LmdldE5vT3BTaGFkZXJDb2RlKCdGUkFHTUVOVCcpIH0pOworICAgIGNvbnN0
IHBpcGVsaW5lID0gdC5kZXZpY2UuY3JlYXRlUmVuZGVyUGlwZWxpbmUoeworICAgICAgdmVydGV4
OiB7IG1vZHVsZTogdlNoYWRlciwgZW50cnlQb2ludDogJ21haW4nIH0sCisgICAgICBmcmFnbWVu
dDogeworICAgICAgICBtb2R1bGU6IGZTaGFkZXIsCisgICAgICAgIGVudHJ5UG9pbnQ6ICdtYWlu
JywKKyAgICAgICAgdGFyZ2V0czogW3sgZm9ybWF0OiAncmdiYTh1bm9ybScsIHdyaXRlTWFzazog
MCB9XSwKKyAgICAgIH0sCisgICAgfSk7CisKKyAgICBhd2FpdCB0LmV4ZWN1dGVDb21tYW5kc0Fm
dGVyRGVzdHJveShzdGFnZSwgYXdhaXRMb3N0LCAncmVuZGVyIHBhc3MnLCBtYWtlciA9PiB7Cisg
ICAgICBtYWtlci5lbmNvZGVyLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsKKyAgICAgIG1ha2VyLmVu
Y29kZXIuZHJhdygwKTsKKyAgICAgIHJldHVybiBtYWtlcjsKKyAgICB9KTsKKyAgfSk7CisKK2cu
dGVzdCgnY29tbWFuZCxyZW5kZXJQYXNzLHJlbmRlckJ1bmRsZScpCisgIC5kZXNjKAorICAgIGAK
K1Rlc3RzIGVuY29kaW5nIGFuZCBkcmF3aW5nIGEgcmVuZGVyIHBhc3MgaW5jbHVkaW5nIGEgcmVu
ZGVyIGJ1bmRsZSBvbiBkZXN0cm95ZWQgZGV2aWNlLgorICAtIEJpbmRzIHZhbGlkIHBpcGVsaW5l
IGFuZCBiaW5kZ3JvdXBzLCBleGVjdXRlcyByZW5kZXIgYnVuZGxlLCB0aGVuIGRyYXdzCisgIC0g
VGVzdHMgZmluaXNoaW5nIGVuY29kaW5nIG9uIGRlc3Ryb3llZCBkZXZpY2UKKyAgLSBUZXN0cyBz
dWJtaXR0aW5nIGNvbW1hbmQgb24gZGVzdHJveWVkIGRldmljZQorICBgCisgICkKKyAgLnBhcmFt
cyh1ID0+CisgICAgdS5iZWdpblN1YmNhc2VzKCkuY29tYmluZSgnc3RhZ2UnLCBrQ29tbWFuZFZh
bGlkYXRpb25TdGFnZXMpLmNvbWJpbmUoJ2F3YWl0TG9zdCcsIFt0cnVlLCBmYWxzZV0pCisgICkK
KyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgc3RhZ2UsIGF3YWl0TG9zdCB9ID0gdC5w
YXJhbXM7CisgICAgY29uc3QgdlNoYWRlciA9IHQuZGV2aWNlLmNyZWF0ZVNoYWRlck1vZHVsZSh7
IGNvZGU6IHQuZ2V0Tm9PcFNoYWRlckNvZGUoJ1ZFUlRFWCcpIH0pOworICAgIGNvbnN0IGZTaGFk
ZXIgPSB0LmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiB0LmdldE5vT3BTaGFkZXJD
b2RlKCdGUkFHTUVOVCcpIH0pOworICAgIGNvbnN0IHBpcGVsaW5lID0gdC5kZXZpY2UuY3JlYXRl
UmVuZGVyUGlwZWxpbmUoeworICAgICAgdmVydGV4OiB7IG1vZHVsZTogdlNoYWRlciwgZW50cnlQ
b2ludDogJ21haW4nIH0sCisgICAgICBmcmFnbWVudDogeworICAgICAgICBtb2R1bGU6IGZTaGFk
ZXIsCisgICAgICAgIGVudHJ5UG9pbnQ6ICdtYWluJywKKyAgICAgICAgdGFyZ2V0czogW3sgZm9y
bWF0OiAncmdiYTh1bm9ybScsIHdyaXRlTWFzazogMCB9XSwKKyAgICAgIH0sCisgICAgfSk7CisK
KyAgICBhd2FpdCB0LmV4ZWN1dGVDb21tYW5kc0FmdGVyRGVzdHJveShzdGFnZSwgYXdhaXRMb3N0
LCAncmVuZGVyIGJ1bmRsZScsIG1ha2VyID0+IHsKKyAgICAgIG1ha2VyLmVuY29kZXIuc2V0UGlw
ZWxpbmUocGlwZWxpbmUpOworICAgICAgbWFrZXIuZW5jb2Rlci5kcmF3KDApOworICAgICAgcmV0
dXJuIG1ha2VyOworICAgIH0pOworICB9KTsKKworZy50ZXN0KCdxdWV1ZSx3cml0ZUJ1ZmZlcicp
CisgIC5kZXNjKAorICAgIGAKK1Rlc3RzIHdyaXRlQnVmZmVyIG9uIHF1ZXVlIG9uIGRlc3Ryb3ll
ZCBkZXZpY2UuCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmNvbWJpbmUoJ251bUVs
ZW1lbnRzJywgWzQsIDgsIDE2XSkuYmVnaW5TdWJjYXNlcygpLmNvbWJpbmUoJ2F3YWl0TG9zdCcs
IFt0cnVlLCBmYWxzZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgbnVt
RWxlbWVudHMsIGF3YWl0TG9zdCB9ID0gdC5wYXJhbXM7CisgICAgY29uc3QgYnVmZmVyID0gdC5k
ZXZpY2UuY3JlYXRlQnVmZmVyKHsKKyAgICAgIHNpemU6IG51bUVsZW1lbnRzLAorICAgICAgdXNh
Z2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNULAorICAgIH0pOworCisgICAgY29uc3QgZGF0YSA9
IG5ldyBVaW50OEFycmF5KG51bUVsZW1lbnRzKTsKKyAgICBhd2FpdCB0LmV4ZWN1dGVBZnRlckRl
c3Ryb3koKCkgPT4geworICAgICAgdC5kZXZpY2UucXVldWUud3JpdGVCdWZmZXIoYnVmZmVyLCAw
LCBkYXRhKTsKKyAgICB9LCBhd2FpdExvc3QpOworICB9KTsKKworZy50ZXN0KCdxdWV1ZSx3cml0
ZVRleHR1cmUsMmQsdW5jb21wcmVzc2VkX2Zvcm1hdCcpCisgIC5kZXNjKAorICAgIGAKK1Rlc3Rz
IHdyaXRlVGV4dHVyZSBvbiBxdWV1ZSBvbiBkZXN0cm95ZWQgZGV2aWNlIHdpdGggdW5jb21wcmVz
c2VkIGZvcm1hdHMuCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1LmNvbWJpbmUoJ2Zv
cm1hdCcsIGtSZWd1bGFyVGV4dHVyZUZvcm1hdHMpLmJlZ2luU3ViY2FzZXMoKS5jb21iaW5lKCdh
d2FpdExvc3QnLCBbdHJ1ZSwgZmFsc2VdKQorICApCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBj
b25zdCB7IGZvcm1hdCwgYXdhaXRMb3N0IH0gPSB0LnBhcmFtczsKKyAgICBjb25zdCB7IGJsb2Nr
V2lkdGgsIGJsb2NrSGVpZ2h0LCBieXRlc1BlckJsb2NrIH0gPSBrVGV4dHVyZUZvcm1hdEluZm9b
Zm9ybWF0XTsKKyAgICBjb25zdCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXNQZXJCbG9jayk7
CisgICAgY29uc3QgdGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoeworICAgICAgc2l6
ZTogeyB3aWR0aDogYmxvY2tXaWR0aCwgaGVpZ2h0OiBibG9ja0hlaWdodCB9LAorICAgICAgdXNh
Z2U6IEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVCwKKyAgICAgIGZvcm1hdCwKKyAgICB9KTsKKwor
ICAgIGF3YWl0IHQuZXhlY3V0ZUFmdGVyRGVzdHJveSgoKSA9PiB7CisgICAgICB0LmRldmljZS5x
dWV1ZS53cml0ZVRleHR1cmUoCisgICAgICAgIHsgdGV4dHVyZSB9LAorICAgICAgICBkYXRhLAor
ICAgICAgICB7fSwKKyAgICAgICAgeyB3aWR0aDogYmxvY2tXaWR0aCwgaGVpZ2h0OiBibG9ja0hl
aWdodCB9CisgICAgICApOworICAgIH0sIGF3YWl0TG9zdCk7CisgIH0pOworCitnLnRlc3QoJ3F1
ZXVlLHdyaXRlVGV4dHVyZSwyZCxjb21wcmVzc2VkX2Zvcm1hdCcpCisgIC5kZXNjKAorICAgIGAK
K1Rlc3RzIHdyaXRlVGV4dHVyZSBvbiBxdWV1ZSBvbiBkZXN0cm95ZWQgZGV2aWNlIHdpdGggY29t
cHJlc3NlZCBmb3JtYXRzLgorICBgCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdQorICAgICAg
LmNvbWJpbmUoJ2Zvcm1hdCcsIGtDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMpCisgICAgICAuYmVn
aW5TdWJjYXNlcygpCisgICAgICAuY29tYmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkK
KyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgeyBmb3JtYXQsIGF3YWl0TG9zdCB9
ID0gdC5wYXJhbXM7CisgICAgY29uc3QgeyBibG9ja1dpZHRoLCBibG9ja0hlaWdodCwgYnl0ZXNQ
ZXJCbG9jaywgZmVhdHVyZSB9ID0ga1RleHR1cmVGb3JtYXRJbmZvW2Zvcm1hdF07CisgICAgYXdh
aXQgdC5zZWxlY3REZXZpY2VPclNraXBUZXN0Q2FzZShmZWF0dXJlKTsKKyAgICBjb25zdCBkYXRh
ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXNQZXJCbG9jayk7CisgICAgY29uc3QgdGV4dHVyZSA9IHQu
ZGV2aWNlLmNyZWF0ZVRleHR1cmUoeworICAgICAgc2l6ZTogeyB3aWR0aDogYmxvY2tXaWR0aCwg
aGVpZ2h0OiBibG9ja0hlaWdodCB9LAorICAgICAgdXNhZ2U6IEdQVVRleHR1cmVVc2FnZS5DT1BZ
X0RTVCwKKyAgICAgIGZvcm1hdCwKKyAgICB9KTsKKworICAgIGF3YWl0IHQuZXhlY3V0ZUFmdGVy
RGVzdHJveSgoKSA9PiB7CisgICAgICB0LmRldmljZS5xdWV1ZS53cml0ZVRleHR1cmUoCisgICAg
ICAgIHsgdGV4dHVyZSB9LAorICAgICAgICBkYXRhLAorICAgICAgICB7fSwKKyAgICAgICAgeyB3
aWR0aDogYmxvY2tXaWR0aCwgaGVpZ2h0OiBibG9ja0hlaWdodCB9CisgICAgICApOworICAgIH0s
IGF3YWl0TG9zdCk7CisgIH0pOworCitnLnRlc3QoJ3F1ZXVlLGNvcHlFeHRlcm5hbEltYWdlVG9U
ZXh0dXJlLGNhbnZhcycpCisgIC5kZXNjKAorICAgIGAKK1Rlc3RzIGNvcHlFeHRlcm5hbEltYWdl
VG9UZXh0dXJlIGZyb20gY2FudmFzIG9uIHF1ZXVlIG9uIGRlc3Ryb3llZCBkZXZpY2UuCisgIGAK
KyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1CisgICAgICAuY29tYmluZSgnY2FudmFzVHlwZScs
IGtBbGxDYW52YXNUeXBlcykKKyAgICAgIC5jb21iaW5lKCdjb250ZXh0VHlwZScsIGtWYWxpZENh
bnZhc0NvbnRleHRJZHMpCisgICAgICAuZmlsdGVyKCh7IGNvbnRleHRUeXBlIH0pID0+IHsKKyAg
ICAgICAgcmV0dXJuIGNhbkNvcHlGcm9tQ2FudmFzQ29udGV4dChjb250ZXh0VHlwZSk7CisgICAg
ICB9KQorICAgICAgLmJlZ2luU3ViY2FzZXMoKQorICAgICAgLmNvbWJpbmUoJ2F3YWl0TG9zdCcs
IFt0cnVlLCBmYWxzZV0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHsgY2Fu
dmFzVHlwZSwgY29udGV4dFR5cGUsIGF3YWl0TG9zdCB9ID0gdC5wYXJhbXM7CisgICAgY29uc3Qg
Y2FudmFzID0gY3JlYXRlQ2FudmFzKHQsIGNhbnZhc1R5cGUsIDEsIDEpOworICAgIGNvbnN0IHRl
eHR1cmUgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgIHNpemU6IHsgd2lkdGg6IDEs
IGhlaWdodDogMSB9LAorICAgICAgZm9ybWF0OiAnYmdyYTh1bm9ybScsCisgICAgICB1c2FnZTog
R1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNULAorICAgIH0pOworCisgICAgY29uc3QgY3R4ID0gY2Fu
dmFzLmdldENvbnRleHQoY29udGV4dFR5cGUpOworICAgIGlmIChjdHggPT09IG51bGwpIHsKKyAg
ICAgIHQuc2tpcCgnRmFpbGVkIHRvIGdldCBjb250ZXh0IGZvciBjYW52YXMgZWxlbWVudCcpOwor
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0LnRyeVRyYWNrRm9yQ2xlYW51cChjdHgpOworCisg
ICAgYXdhaXQgdC5leGVjdXRlQWZ0ZXJEZXN0cm95KCgpID0+IHsKKyAgICAgIHQuZGV2aWNlLnF1
ZXVlLmNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKAorICAgICAgICB7IHNvdXJjZTogY2FudmFz
IH0sCisgICAgICAgIHsgdGV4dHVyZSB9LAorICAgICAgICB7IHdpZHRoOiAxLCBoZWlnaHQ6IDEg
fQorICAgICAgKTsKKyAgICB9LCBhd2FpdExvc3QpOworICB9KTsKKworZy50ZXN0KCdxdWV1ZSxj
b3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSxpbWFnZUJpdG1hcCcpCisgIC5kZXNjKAorICAgIGAK
K1Rlc3RzIGNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlIGZyb20gY2FudmFzIG9uIHF1ZXVlIG9u
IGRlc3Ryb3llZCBkZXZpY2UuCisgIGAKKyAgKQorICAucGFyYW1zKHUgPT4gdS5iZWdpblN1YmNh
c2VzKCkuY29tYmluZSgnYXdhaXRMb3N0JywgW3RydWUsIGZhbHNlXSkpCisgIC5mbihhc3luYyB0
ID0+IHsKKyAgICBjb25zdCB7IGF3YWl0TG9zdCB9ID0gdC5wYXJhbXM7CisgICAgaWYgKHR5cGVv
ZiBjcmVhdGVJbWFnZUJpdG1hcCA9PT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIHQuc2tpcCgnQ3Jl
YXRpbmcgSW1hZ2VCaXRtYXBzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7CisgICAgfQorICAgIGNvbnN0
IGltYWdlQml0bWFwID0gYXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEltYWdlRGF0YShuZXcg
VWludDhDbGFtcGVkQXJyYXkoNCksIDEsIDEpKTsKKworICAgIGNvbnN0IHRleHR1cmUgPSB0LmRl
dmljZS5jcmVhdGVUZXh0dXJlKHsKKyAgICAgIHNpemU6IHsgd2lkdGg6IDEsIGhlaWdodDogMSB9
LAorICAgICAgZm9ybWF0OiAnYmdyYTh1bm9ybScsCisgICAgICB1c2FnZTogR1BVVGV4dHVyZVVz
YWdlLkNPUFlfRFNULAorICAgIH0pOworCisgICAgYXdhaXQgdC5leGVjdXRlQWZ0ZXJEZXN0cm95
KCgpID0+IHsKKyAgICAgIHQuZGV2aWNlLnF1ZXVlLmNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJl
KAorICAgICAgICB7IHNvdXJjZTogaW1hZ2VCaXRtYXAgfSwKKyAgICAgICAgeyB0ZXh0dXJlIH0s
CisgICAgICAgIHsgd2lkdGg6IDEsIGhlaWdodDogMSB9CisgICAgICApOworICAgIH0sIGF3YWl0
TG9zdCk7CisgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL3ZhbGlkYXRpb25fdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi92YWxpZGF0aW9uX3Rlc3QuanMK
aW5kZXggODBjMGFhMDZkZGM4Li5jNTc5ZjY3MGM4MzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi92YWxpZGF0aW9uX3Rlc3Qu
anMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0
aW9uL3ZhbGlkYXRpb25fdGVzdC5qcwpAQCAtMiw2ICsyLDcgQEAKICAqIEFVVE8tR0VORVJBVEVE
IC0gRE8gTk9UIEVESVQuIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9jdHMKICAq
Ki8gaW1wb3J0IHsga01heFF1ZXJ5Q291bnQgfSBmcm9tICcuLi8uLi9jYXBhYmlsaXR5X2luZm8u
anMnOwogaW1wb3J0IHsgR1BVVGVzdCB9IGZyb20gJy4uLy4uL2dwdV90ZXN0LmpzJzsKKwogLyoq
CiAgKiBCYXNlIGZpeHR1cmUgZm9yIFdlYkdQVSB2YWxpZGF0aW9uIHRlc3RzLgogICovCkBAIC0y
NzcsNiArMjc4LDIyIEBAIGV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uVGVzdCBleHRlbmRzIEdQVVRl
c3QgewogICAgIH0KICAgfQogCisgIC8qKiBSZXR1cm4gYSBuby1vcCBzaGFkZXIgY29kZSBzbmlw
cGV0IGZvciB0aGUgc3BlY2lmaWVkIHNoYWRlciBzdGFnZS4gKi8KKyAgZ2V0Tm9PcFNoYWRlckNv
ZGUoc3RhZ2UpIHsKKyAgICBzd2l0Y2ggKHN0YWdlKSB7CisgICAgICBjYXNlICdWRVJURVgnOgor
ICAgICAgICByZXR1cm4gYAorICAgICAgICAgIEBzdGFnZSh2ZXJ0ZXgpIGZuIG1haW4oKSAtPiBA
YnVpbHRpbihwb3NpdGlvbikgdmVjNDxmMzI+IHsKKyAgICAgICAgICAgIHJldHVybiB2ZWM0PGYz
Mj4oKTsKKyAgICAgICAgICB9CisgICAgICAgIGA7CisgICAgICBjYXNlICdGUkFHTUVOVCc6Cisg
ICAgICAgIHJldHVybiBgQHN0YWdlKGZyYWdtZW50KSBmbiBtYWluKCkge31gOworICAgICAgY2Fz
ZSAnQ09NUFVURSc6CisgICAgICAgIHJldHVybiBgQHN0YWdlKGNvbXB1dGUpIEB3b3JrZ3JvdXBf
c2l6ZSgxKSBmbiBtYWluKCkge31gOworICAgIH0KKyAgfQorCiAgIC8qKiBDcmVhdGUgYSBHUFVS
ZW5kZXJQaXBlbGluZSBpbiB0aGUgc3BlY2lmaWVkIHN0YXRlLiAqLwogICBjcmVhdGVSZW5kZXJQ
aXBlbGluZVdpdGhTdGF0ZShzdGF0ZSkgewogICAgIHJldHVybiBzdGF0ZSA9PT0gJ3ZhbGlkJyA/
IHRoaXMuY3JlYXRlTm9PcFJlbmRlclBpcGVsaW5lKCkgOiB0aGlzLmNyZWF0ZUVycm9yUmVuZGVy
UGlwZWxpbmUoKTsKQEAgLTI4Nyw5ICszMDQsNyBAQCBleHBvcnQgY2xhc3MgVmFsaWRhdGlvblRl
c3QgZXh0ZW5kcyBHUFVUZXN0IHsKICAgICByZXR1cm4gdGhpcy5kZXZpY2UuY3JlYXRlUmVuZGVy
UGlwZWxpbmUoewogICAgICAgdmVydGV4OiB7CiAgICAgICAgIG1vZHVsZTogdGhpcy5kZXZpY2Uu
Y3JlYXRlU2hhZGVyTW9kdWxlKHsKLSAgICAgICAgICBjb2RlOiBgQHN0YWdlKHZlcnRleCkgZm4g
bWFpbigpIC0+IEBidWlsdGluKHBvc2l0aW9uKSB2ZWM0PGYzMj4gewotICByZXR1cm4gdmVjNDxm
MzI+KCk7Ci19YCwKKyAgICAgICAgICBjb2RlOiB0aGlzLmdldE5vT3BTaGFkZXJDb2RlKCdWRVJU
RVgnKSwKICAgICAgICAgfSksCiAKICAgICAgICAgZW50cnlQb2ludDogJ21haW4nLApAQCAtMjk3
LDcgKzMxMiw3IEBAIGV4cG9ydCBjbGFzcyBWYWxpZGF0aW9uVGVzdCBleHRlbmRzIEdQVVRlc3Qg
ewogCiAgICAgICBmcmFnbWVudDogewogICAgICAgICBtb2R1bGU6IHRoaXMuZGV2aWNlLmNyZWF0
ZVNoYWRlck1vZHVsZSh7Ci0gICAgICAgICAgY29kZTogJ0BzdGFnZShmcmFnbWVudCkgZm4gbWFp
bigpIHt9JywKKyAgICAgICAgICBjb2RlOiB0aGlzLmdldE5vT3BTaGFkZXJDb2RlKCdGUkFHTUVO
VCcpLAogICAgICAgICB9KSwKIAogICAgICAgICBlbnRyeVBvaW50OiAnbWFpbicsCkBAIC0zMzEs
NyArMzQ2LDcgQEAgZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25UZXN0IGV4dGVuZHMgR1BVVGVzdCB7
CiAgICAgICBsYXlvdXQsCiAgICAgICBjb21wdXRlOiB7CiAgICAgICAgIG1vZHVsZTogdGhpcy5k
ZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKLSAgICAgICAgICBjb2RlOiAnQHN0YWdlKGNvbXB1
dGUpIEB3b3JrZ3JvdXBfc2l6ZSgxKSBmbiBtYWluKCkge30nLAorICAgICAgICAgIGNvZGU6IHRo
aXMuZ2V0Tm9PcFNoYWRlckNvZGUoJ0NPTVBVVEUnKSwKICAgICAgICAgfSksCiAKICAgICAgICAg
ZW50cnlQb2ludDogJ21haW4nLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3ZlcnRleF9zdGF0ZS5zcGVjLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3ZlcnRleF9zdGF0
ZS5zcGVjLmpzCmluZGV4IDFkNTlmNDkxZTlmYi4uZGM2NjFiNDBkOGEzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vdmVydGV4
X3N0YXRlLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L2FwaS92YWxpZGF0aW9uL3ZlcnRleF9zdGF0ZS5zcGVjLmpzCkBAIC0xMTMsNyArMTEzLDcgQEAg
Y2xhc3MgRiBleHRlbmRzIFZhbGlkYXRpb25UZXN0IHsKIAogICAgIGxldCBjb3VudCA9IDA7CiAg
ICAgZm9yIChjb25zdCBpbnB1dCBvZiBpbnB1dHMpIHsKLSAgICAgIGludGVyZmFjZXMgKz0gYEBs
b2NhdGlvbigke2lucHV0LmxvY2F0aW9ufSkgaW5wdXQke2NvdW50fSA6ICR7aW5wdXQudHlwZX07
XG5gOworICAgICAgaW50ZXJmYWNlcyArPSBgQGxvY2F0aW9uKCR7aW5wdXQubG9jYXRpb259KSBp
bnB1dCR7Y291bnR9IDogJHtpbnB1dC50eXBlfSxcbmA7CiAgICAgICBib2R5ICs9IGB2YXIgaSR7
Y291bnR9IDogJHtpbnB1dC50eXBlfSA9IGlucHV0LmlucHV0JHtjb3VudH07XG5gOwogICAgICAg
Y291bnQrKzsKICAgICB9CkBAIC0zNjIsMTEgKzM2MiwxMSBAQCBnLnRlc3QoJ3ZlcnRleF9hdHRy
aWJ1dGVfc2hhZGVyTG9jYXRpb25fdW5pcXVlJykKIGcudGVzdCgndmVydGV4X3NoYWRlcl9pbnB1
dF9sb2NhdGlvbl9saW1pdCcpCiAgIC5kZXNjKAogICAgIGBUZXN0IHRoYXQgdmVydGV4IHNoYWRl
cidzIGlucHV0J3MgbG9jYXRpb24gZGVjb3JhdGlvbiBtdXN0IGJlIGxlc3MgdGhhbiBtYXhWZXJ0
ZXhBdHRyaWJ1dGVzLgotICAgLSBUZXN0IGZvciBzaGFkZXJMb2NhdGlvbiAwLCAxLCBsaW1pdCAt
IDEsIGxpbWl0YAorICAgLSBUZXN0IGZvciBzaGFkZXJMb2NhdGlvbiAwLCAxLCBsaW1pdCAtIDEs
IGxpbWl0LCBNQVhfSTMyICh0aGUgV0dTTCBzcGVjIHJlcXVpcmVzIGEgbm9uLW5lZ2F0aXZlIGkz
MilgCiAgICkKICAgLnBhcmFtc1N1YmNhc2VzT25seSh1ID0+CiAgICAgdSAvLwotICAgICAgLmNv
bWJpbmUoJ3Rlc3RMb2NhdGlvbicsIFswLCAxLCBrTWF4VmVydGV4QXR0cmlidXRlcyAtIDEsIGtN
YXhWZXJ0ZXhBdHRyaWJ1dGVzLCAtMSwgMiAqKiAzMl0pCisgICAgICAuY29tYmluZSgndGVzdExv
Y2F0aW9uJywgWzAsIDEsIGtNYXhWZXJ0ZXhBdHRyaWJ1dGVzIC0gMSwga01heFZlcnRleEF0dHJp
YnV0ZXMsIDIgKiogMzEgLSAxXSkKICAgKQogICAuZm4odCA9PiB7CiAgICAgY29uc3QgeyB0ZXN0
TG9jYXRpb24gfSA9IHQucGFyYW1zOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2NhcGFiaWxpdHlfaW5mby5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9jYXBhYmlsaXR5X2luZm8uanMKaW5kZXggYmNiNzNjMjNjYTRjLi43
Yzk0MWE5ZTRhMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9jYXBhYmlsaXR5X2luZm8uanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2NhcGFiaWxpdHlfaW5mby5qcwpAQCAtNyw3ICs3LDcgQEAgaW1wb3J0IHsga2V5
c09mLCBtYWtlVGFibGUsIG51bWVyaWNLZXlzT2YgfSBmcm9tICcuLi9jb21tb24vdXRpbC9kYXRh
X3RhYmxlcy5qcycKIGltcG9ydCB7IGFzc2VydFR5cGVUcnVlIH0gZnJvbSAnLi4vY29tbW9uL3V0
aWwvdHlwZXMuanMnOwogaW1wb3J0IHsgYXNzZXJ0LCB1bnJlYWNoYWJsZSB9IGZyb20gJy4uL2Nv
bW1vbi91dGlsL3V0aWwuanMnOwogCi1pbXBvcnQgeyBHUFVDb25zdCB9IGZyb20gJy4vY29uc3Rh
bnRzLmpzJzsKK2ltcG9ydCB7IEdQVUNvbnN0LCBrTWF4VW5zaWduZWRMb25nVmFsdWUsIGtNYXhV
bnNpZ25lZExvbmdMb25nVmFsdWUgfSBmcm9tICcuL2NvbnN0YW50cy5qcyc7CiAKIC8vIEJhc2Ug
ZGV2aWNlIGxpbWl0cyBjYW4gYmUgZm91bmQgaW4gY29uc3RhbnRzLnRzLgogCkBAIC0zMSwyMiAr
MzEsMjYgQEAgZXhwb3J0IGNvbnN0IGtRdWVyeVR5cGVzID0ga2V5c09mKGtRdWVyeVR5cGVJbmZv
KTsKIC8qKiBSZXF1aXJlZCBhbGlnbm1lbnQgb2YgYSBHUFVCdWZmZXIgc2l6ZSwgYnkgc3BlYy4g
Ki8KIGV4cG9ydCBjb25zdCBrQnVmZmVyU2l6ZUFsaWdubWVudCA9IDQ7CiAKLS8qKiBQZXItR1BV
QnVmZmVyVXNhZ2UgaW5mby4gKi8KKy8qKiBQZXItR1BVQnVmZmVyVXNhZ2UgY29weSBpbmZvLiAq
LworZXhwb3J0IGNvbnN0IGtCdWZmZXJVc2FnZUNvcHlJbmZvID0geworICBDT1BZX05PTkU6IDAs
CisgIENPUFlfU1JDOiBHUFVDb25zdC5CdWZmZXJVc2FnZS5DT1BZX1NSQywKKyAgQ09QWV9EU1Q6
IEdQVUNvbnN0LkJ1ZmZlclVzYWdlLkNPUFlfRFNULAorICBDT1BZX1NSQ19EU1Q6IEdQVUNvbnN0
LkJ1ZmZlclVzYWdlLkNPUFlfU1JDIHwgR1BVQ29uc3QuQnVmZmVyVXNhZ2UuQ09QWV9EU1QsCit9
OworCisvKiogTGlzdCBvZiBhbGwgR1BVQnVmZmVyVXNhZ2UgY29weSB2YWx1ZXMuICovCitleHBv
cnQgY29uc3Qga0J1ZmZlclVzYWdlQ29weSA9IGtleXNPZihrQnVmZmVyVXNhZ2VDb3B5SW5mbyk7
CisKKy8qKiBQZXItR1BVQnVmZmVyVXNhZ2Uga2V5cyBhbmQgaW5mby4gKi8KKworZXhwb3J0IGNv
bnN0IGtCdWZmZXJVc2FnZUtleXMgPSBrZXlzT2YoR1BVQ29uc3QuQnVmZmVyVXNhZ2UpOwogZXhw
b3J0IGNvbnN0IGtCdWZmZXJVc2FnZUluZm8gPSB7Ci0gIFtHUFVDb25zdC5CdWZmZXJVc2FnZS5N
QVBfUkVBRF06IHt9LAotICBbR1BVQ29uc3QuQnVmZmVyVXNhZ2UuTUFQX1dSSVRFXToge30sCi0g
IFtHUFVDb25zdC5CdWZmZXJVc2FnZS5DT1BZX1NSQ106IHt9LAotICBbR1BVQ29uc3QuQnVmZmVy
VXNhZ2UuQ09QWV9EU1RdOiB7fSwKLSAgW0dQVUNvbnN0LkJ1ZmZlclVzYWdlLklOREVYXToge30s
Ci0gIFtHUFVDb25zdC5CdWZmZXJVc2FnZS5WRVJURVhdOiB7fSwKLSAgW0dQVUNvbnN0LkJ1ZmZl
clVzYWdlLlVOSUZPUk1dOiB7fSwKLSAgW0dQVUNvbnN0LkJ1ZmZlclVzYWdlLlNUT1JBR0VdOiB7
fSwKLSAgW0dQVUNvbnN0LkJ1ZmZlclVzYWdlLklORElSRUNUXToge30sCi0gIFtHUFVDb25zdC5C
dWZmZXJVc2FnZS5RVUVSWV9SRVNPTFZFXToge30sCisgIC4uLkdQVUNvbnN0LkJ1ZmZlclVzYWdl
LAogfTsKIAogLyoqIExpc3Qgb2YgYWxsIEdQVUJ1ZmZlclVzYWdlIHZhbHVlcy4gKi8KLWV4cG9y
dCBjb25zdCBrQnVmZmVyVXNhZ2VzID0gbnVtZXJpY0tleXNPZihrQnVmZmVyVXNhZ2VJbmZvKTsK
K2V4cG9ydCBjb25zdCBrQnVmZmVyVXNhZ2VzID0gT2JqZWN0LnZhbHVlcyhHUFVDb25zdC5CdWZm
ZXJVc2FnZSk7CiBleHBvcnQgY29uc3Qga0FsbEJ1ZmZlclVzYWdlQml0cyA9IGtCdWZmZXJVc2Fn
ZXMucmVkdWNlKAogICAocHJldmlvdXNTZXQsIGN1cnJlbnRVc2FnZSkgPT4gcHJldmlvdXNTZXQg
fCBjdXJyZW50VXNhZ2UsCiAgIDAKQEAgLTE0MSwxMSArMTQ1LDExIEBAIGNvbnN0IGtUZXhGbXRJ
bmZvSGVhZGVyID0gWwogXTsKIGNvbnN0IGtTaXplZERlcHRoU3RlbmNpbEZvcm1hdEluZm8gPSBt
YWtlVGFibGUoCiAgIGtUZXhGbXRJbmZvSGVhZGVyLAotICBbdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZh
bHNlLCAsICwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgLCAsIDEsIDEsICwgdW5kZWZpbmVkXSwKKyAg
W3RydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgLCAsIGZhbHNlLCAsICwgLCAsIDEsIDEsICwgdW5k
ZWZpbmVkXSwKICAgewotICAgIGRlcHRoMzJmbG9hdDogWywgLCAsICwgdHJ1ZSwgZmFsc2UsICwg
LCAsICdkZXB0aCcsIDRdLAotICAgIGRlcHRoMTZ1bm9ybTogWywgLCAsICwgdHJ1ZSwgZmFsc2Us
ICwgLCAsICdkZXB0aCcsIDJdLAotICAgIHN0ZW5jaWw4OiBbLCAsICwgLCBmYWxzZSwgdHJ1ZSwg
LCAsICwgJ3VpbnQnLCAxXSwKKyAgICBkZXB0aDMyZmxvYXQ6IFssICwgLCAsIHRydWUsIGZhbHNl
LCAsIHRydWUsIGZhbHNlLCAnZGVwdGgnLCA0XSwKKyAgICBkZXB0aDE2dW5vcm06IFssICwgLCAs
IHRydWUsIGZhbHNlLCAsIHRydWUsIHRydWUsICdkZXB0aCcsIDJdLAorICAgIHN0ZW5jaWw4OiBb
LCAsICwgLCBmYWxzZSwgdHJ1ZSwgLCB0cnVlLCB0cnVlLCAndWludCcsIDFdLAogICB9CiApOwog
CkBAIC0xMDkwLDYgKzEwOTQsNzQgQEAgY29uc3Qga0RlcHRoU3RlbmNpbEZvcm1hdENhcGFiaWxp
dHlJbkJ1ZmZlclRleHR1cmVDb3B5ID0gewogICB9LAogfTsKIAorLyoqIGBrRGVwdGhTdGVuY2ls
Rm9ybWF0UmVzb2x2ZWRBc3BlY3RbZm9ybWF0XVthc3BlY3RdYCByZXR1cm5zIHRoZSBhc3BlY3Qt
c3BlY2lmaWMgZm9ybWF0IGZvciBhCisgKiAgZGVwdGgtc3RlbmNpbCBmb3JtYXQsIG9yIGB1bmRl
ZmluZWRgIGlmIHRoZSBmb3JtYXQgZG9lc24ndCBoYXZlIHRoZSBhc3BlY3QuCisgKi8KK2V4cG9y
dCBjb25zdCBrRGVwdGhTdGVuY2lsRm9ybWF0UmVzb2x2ZWRBc3BlY3QgPSB7CisgIC8vIGtVbnNp
emVkRGVwdGhTdGVuY2lsRm9ybWF0cworICBkZXB0aDI0cGx1czogeworICAgIGFsbDogJ2RlcHRo
MjRwbHVzJywKKyAgICAnZGVwdGgtb25seSc6ICdkZXB0aDI0cGx1cycsCisgICAgJ3N0ZW5jaWwt
b25seSc6IHVuZGVmaW5lZCwKKyAgfSwKKworICAnZGVwdGgyNHBsdXMtc3RlbmNpbDgnOiB7Cisg
ICAgYWxsOiAnZGVwdGgyNHBsdXMtc3RlbmNpbDgnLAorICAgICdkZXB0aC1vbmx5JzogJ2RlcHRo
MjRwbHVzJywKKyAgICAnc3RlbmNpbC1vbmx5JzogJ3N0ZW5jaWw4JywKKyAgfSwKKworICAvLyBr
U2l6ZWREZXB0aFN0ZW5jaWxGb3JtYXRzCisgIGRlcHRoMTZ1bm9ybTogeworICAgIGFsbDogJ2Rl
cHRoMTZ1bm9ybScsCisgICAgJ2RlcHRoLW9ubHknOiAnZGVwdGgxNnVub3JtJywKKyAgICAnc3Rl
bmNpbC1vbmx5JzogdW5kZWZpbmVkLAorICB9LAorCisgIGRlcHRoMzJmbG9hdDogeworICAgIGFs
bDogJ2RlcHRoMzJmbG9hdCcsCisgICAgJ2RlcHRoLW9ubHknOiAnZGVwdGgzMmZsb2F0JywKKyAg
ICAnc3RlbmNpbC1vbmx5JzogdW5kZWZpbmVkLAorICB9LAorCisgICdkZXB0aDI0dW5vcm0tc3Rl
bmNpbDgnOiB7CisgICAgYWxsOiAnZGVwdGgyNHVub3JtLXN0ZW5jaWw4JywKKyAgICAnZGVwdGgt
b25seSc6ICdkZXB0aDI0cGx1cycsIC8vIFNob3VsZCB0aGlzIGJlIGRlcHRoMjR1bm9ybT8gU2Vl
IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvZ3B1d2ViL2lzc3Vlcy8yNzMyCisgICAgJ3N0ZW5j
aWwtb25seSc6ICdzdGVuY2lsOCcsCisgIH0sCisKKyAgJ2RlcHRoMzJmbG9hdC1zdGVuY2lsOCc6
IHsKKyAgICBhbGw6ICdkZXB0aDMyZmxvYXQtc3RlbmNpbDgnLAorICAgICdkZXB0aC1vbmx5Jzog
J2RlcHRoMzJmbG9hdCcsCisgICAgJ3N0ZW5jaWwtb25seSc6ICdzdGVuY2lsOCcsCisgIH0sCisK
KyAgc3RlbmNpbDg6IHsKKyAgICBhbGw6ICdzdGVuY2lsOCcsCisgICAgJ2RlcHRoLW9ubHknOiB1
bmRlZmluZWQsCisgICAgJ3N0ZW5jaWwtb25seSc6ICdzdGVuY2lsOCcsCisgIH0sCit9OworCisv
KioKKyAqIEByZXR1cm5zIHRoZSBHUFVUZXh0dXJlRm9ybWF0IGNvcnJlc3BvbmRpbmcgdG8gdGhl
IEBwYXJhbSBhc3BlY3Qgb2YgQHBhcmFtIGZvcm1hdC4KKyAqIFRoaXMgYWxsb3dzIGNob29zaW5n
IHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgZGVwdGgtc3RlbmNpbCBhc3BlY3RzIHdoZW4gY3JlYXRp
bmcgcGlwZWxpbmVzIHRoYXQKKyAqIHdpbGwgaGF2ZSB0byBtYXRjaCB0aGUgcmVzb2x2ZWQgZm9y
bWF0IG9mIHZpZXdzLCBvciB0byBnZXQgcGVyLWFzcGVjdCBpbmZvcm1hdGlvbiBsaWtlIHRoZQor
ICogYGJsb2NrQnl0ZVNpemVgLgorICoKKyAqIE1hbnkgaGVscGVycyB1c2UgYW4gYHVuZGVmaW5l
ZGAgYGFzcGVjdGAgdG8gbWVhbnMgYCdhbGwnYCBzbyB0aGlzIGlzIGFsc28gdGhlIGRlZmF1bHQg
Zm9yIHRoaXMKKyAqIGZ1bmN0aW9uLgorICovCitleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVBlckFz
cGVjdEZvcm1hdChmb3JtYXQsIGFzcGVjdCkgeworICBpZiAoYXNwZWN0ID09PSAnYWxsJyB8fCBh
c3BlY3QgPT09IHVuZGVmaW5lZCkgeworICAgIHJldHVybiBmb3JtYXQ7CisgIH0KKyAgYXNzZXJ0
KGtUZXh0dXJlRm9ybWF0SW5mb1tmb3JtYXRdLmRlcHRoIHx8IGtUZXh0dXJlRm9ybWF0SW5mb1tm
b3JtYXRdLnN0ZW5jaWwpOworICBjb25zdCByZXNvbHZlZCA9IGtEZXB0aFN0ZW5jaWxGb3JtYXRS
ZXNvbHZlZEFzcGVjdFtmb3JtYXRdW2FzcGVjdCA/PyAnYWxsJ107CisgIGFzc2VydChyZXNvbHZl
ZCAhPT0gdW5kZWZpbmVkKTsKKyAgcmV0dXJuIHJlc29sdmVkOworfQorCiAvKioKICAqIEdldHMg
YWxsIGNvcHlhYmxlIGFzcGVjdHMgZm9yIGNvcGllcyBiZXR3ZWVuIHRleHR1cmUgYW5kIGJ1ZmZl
ciBmb3Igc3BlY2lmaWVkIGRlcHRoL3N0ZW5jaWwgZm9ybWF0IGFuZCBjb3B5IHR5cGUsIGJ5IHNw
ZWMuCiAgKi8KQEAgLTExMzAsNiArMTIwMiwyNyBAQCBleHBvcnQgZnVuY3Rpb24gdGV4dHVyZURp
bWVuc2lvbkFuZEZvcm1hdENvbXBhdGlibGUoZGltZW5zaW9uLCBmb3JtYXQpIHsKICAgKTsKIH0K
IAorLyoqIFBlci1HUFVUZXh0dXJlVXNhZ2UgdHlwZSBpbmZvLiAqLworZXhwb3J0IGNvbnN0IGtU
ZXh0dXJlVXNhZ2VUeXBlSW5mbyA9IHsKKyAgdGV4dHVyZTogTnVtYmVyKEdQVUNvbnN0LlRleHR1
cmVVc2FnZS5URVhUVVJFX0JJTkRJTkcpLAorICBzdG9yYWdlOiBOdW1iZXIoR1BVQ29uc3QuVGV4
dHVyZVVzYWdlLlNUT1JBR0VfQklORElORyksCisgIHJlbmRlcjogTnVtYmVyKEdQVUNvbnN0LlRl
eHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCksCit9OworCisvKiogTGlzdCBvZiBhbGwgR1BV
VGV4dHVyZVVzYWdlIHR5cGUgdmFsdWVzLiAqLworZXhwb3J0IGNvbnN0IGtUZXh0dXJlVXNhZ2VU
eXBlID0ga2V5c09mKGtUZXh0dXJlVXNhZ2VUeXBlSW5mbyk7CisKKy8qKiBQZXItR1BVVGV4dHVy
ZVVzYWdlIGNvcHkgaW5mby4gKi8KK2V4cG9ydCBjb25zdCBrVGV4dHVyZVVzYWdlQ29weUluZm8g
PSB7CisgIG5vbmU6IDAsCisgIHNyYzogTnVtYmVyKEdQVUNvbnN0LlRleHR1cmVVc2FnZS5DT1BZ
X1NSQyksCisgIGRzdDogTnVtYmVyKEdQVUNvbnN0LlRleHR1cmVVc2FnZS5DT1BZX0RTVCksCisg
ICdzcmMtZGVzdCc6IE51bWJlcihHUFVDb25zdC5UZXh0dXJlVXNhZ2UuQ09QWV9TUkMpIHwgTnVt
YmVyKEdQVUNvbnN0LlRleHR1cmVVc2FnZS5DT1BZX0RTVCksCit9OworCisvKiogTGlzdCBvZiBh
bGwgR1BVVGV4dHVyZVVzYWdlIGNvcHkgdmFsdWVzLiAqLworZXhwb3J0IGNvbnN0IGtUZXh0dXJl
VXNhZ2VDb3B5ID0ga2V5c09mKGtUZXh0dXJlVXNhZ2VDb3B5SW5mbyk7CisKIC8qKiBQZXItR1BV
VGV4dHVyZVVzYWdlIGluZm8uICovCiBleHBvcnQgY29uc3Qga1RleHR1cmVVc2FnZUluZm8gPSB7
CiAgIFtHUFVDb25zdC5UZXh0dXJlVXNhZ2UuQ09QWV9TUkNdOiB7fSwKQEAgLTEyMzYsOSArMTMy
OSw2IEBAIGFzc2VydFR5cGVUcnVlKCk7CiAvKiogRHluYW1pYyBidWZmZXIgb2Zmc2V0cyByZXF1
aXJlIG9mZnNldCB0byBiZSBkaXZpc2libGUgYnkgMjU2LCBieSBzcGVjLiAqLwogZXhwb3J0IGNv
bnN0IGtNaW5EeW5hbWljQnVmZmVyT2Zmc2V0QWxpZ25tZW50ID0gMjU2OwogCi0vKiogTWF4aW11
bSBudW1iZXIgb2YgYmluZGluZ3MgcGVyIEdQVUJpbmRHcm91cChMYXlvdXQpLCBieSBzcGVjLiAq
LwotZXhwb3J0IGNvbnN0IGtNYXhCaW5kaW5nc1BlckJpbmRHcm91cCA9IDE2OwotCiAvKiogRGVm
YXVsdCBgUGVyU2hhZGVyU3RhZ2VgIGJpbmRpbmcgbGltaXRzLCBieSBzcGVjLiAqLwogZXhwb3J0
IGNvbnN0IGtQZXJTdGFnZUJpbmRpbmdMaW1pdHMgPSB7CiAgIHVuaWZvcm1CdWY6IHsgY2xhc3M6
ICd1bmlmb3JtQnVmJywgbWF4OiAxMiB9LApAQCAtMTQ3NSw2ICsxNTY1LDggQEAgZXhwb3J0IGZ1
bmN0aW9uIGFsbEJpbmRpbmdFbnRyaWVzKGluY2x1ZGVVbmRlZmluZWQsIHN0b3JhZ2VUZXh0dXJl
Rm9ybWF0ID0gJ3JnYmEKIC8vIFNoYWRlciBzdGFnZXMKIAogLyoqIExpc3Qgb2YgYWxsIEdQVVNo
YWRlclN0YWdlIHZhbHVlcy4gKi8KKworZXhwb3J0IGNvbnN0IGtTaGFkZXJTdGFnZUtleXMgPSBP
YmplY3Qua2V5cyhHUFVDb25zdC5TaGFkZXJTdGFnZSk7CiBleHBvcnQgY29uc3Qga1NoYWRlclN0
YWdlcyA9IFsKICAgR1BVQ29uc3QuU2hhZGVyU3RhZ2UuVkVSVEVYLAogICBHUFVDb25zdC5TaGFk
ZXJTdGFnZS5GUkFHTUVOVCwKQEAgLTE1MzQsMyArMTYyNiw1MyBAQCBleHBvcnQgY29uc3Qga01h
eFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlID0gMjA0ODsKIGV4cG9ydCBjb25zdCBrRHJhd0luZGly
ZWN0UGFyYW1ldGVyc1NpemUgPSA0OwogLyoqIFRoZSBzaXplIG9mIGluZGlyZWN0IGRyYXdJbmRl
eGVkIHBhcmFtZXRlcnMgaW4gdGhlIGluZGlyZWN0QnVmZmVyIG9mIGRyYXdJbmRleGVkSW5kaXJl
Y3QgKi8KIGV4cG9ydCBjb25zdCBrRHJhd0luZGV4ZWRJbmRpcmVjdFBhcmFtZXRlcnNTaXplID0g
NTsKKworLyoqIEluZm8gZm9yIGVhY2ggZW50cnkgb2YgR1BVU3VwcG9ydGVkTGltaXRzICovCitl
eHBvcnQgY29uc3Qga0xpbWl0SW5mbyA9IG1ha2VUYWJsZSgKKyAgWydjbGFzcycsICdkZWZhdWx0
JywgJ21heGltdW1WYWx1ZSddLAorICBbJ21heGltdW0nLCAsIGtNYXhVbnNpZ25lZExvbmdWYWx1
ZV0sCisgIHsKKyAgICBtYXhUZXh0dXJlRGltZW5zaW9uMUQ6IFssIDgxOTJdLAorICAgIG1heFRl
eHR1cmVEaW1lbnNpb24yRDogWywgODE5Ml0sCisgICAgbWF4VGV4dHVyZURpbWVuc2lvbjNEOiBb
LCAyMDQ4XSwKKyAgICBtYXhUZXh0dXJlQXJyYXlMYXllcnM6IFssIDI1Nl0sCisKKyAgICBtYXhC
aW5kR3JvdXBzOiBbLCA0XSwKKyAgICBtYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGlu
ZUxheW91dDogWywgOF0sCisgICAgbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVM
YXlvdXQ6IFssIDRdLAorICAgIG1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlOiBbLCAx
Nl0sCisgICAgbWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZTogWywgMTZdLAorICAgIG1heFN0b3Jh
Z2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2U6IFssIDhdLAorICAgIG1heFN0b3JhZ2VUZXh0dXJlc1Bl
clNoYWRlclN0YWdlOiBbLCA0XSwKKyAgICBtYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdl
OiBbLCAxMl0sCisKKyAgICBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemU6IFssIDY1NTM2LCBr
TWF4VW5zaWduZWRMb25nTG9uZ1ZhbHVlXSwKKyAgICBtYXhTdG9yYWdlQnVmZmVyQmluZGluZ1Np
emU6IFssIDEzNDIxNzcyOCwga01heFVuc2lnbmVkTG9uZ0xvbmdWYWx1ZV0sCisgICAgbWluVW5p
Zm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudDogWydhbGlnbm1lbnQnLCAyNTZdLAorICAgIG1pblN0
b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQ6IFsnYWxpZ25tZW50JywgMjU2XSwKKworICAgIG1h
eFZlcnRleEJ1ZmZlcnM6IFssIDhdLAorICAgIG1heFZlcnRleEF0dHJpYnV0ZXM6IFssIDE2XSwK
KyAgICBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZTogWywgMjA0OF0sCisgICAgbWF4SW50ZXJT
dGFnZVNoYWRlckNvbXBvbmVudHM6IFssIDYwXSwKKworICAgIG1heENvbXB1dGVXb3JrZ3JvdXBT
dG9yYWdlU2l6ZTogWywgMTYzNTJdLAorICAgIG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtn
cm91cDogWywgMjU2XSwKKyAgICBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVg6IFssIDI1Nl0sCisg
ICAgbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZOiBbLCAyNTZdLAorICAgIG1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWjogWywgNjRdLAorICAgIG1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9u
OiBbLCA2NTUzNV0sCisgIH0KKyk7CisKKy8qKiBMaXN0IG9mIGFsbCBlbnRyaWVzIG9mIEdQVVN1
cHBvcnRlZExpbWl0cy4gKi8KK2V4cG9ydCBjb25zdCBrTGltaXRzID0ga2V5c09mKGtMaW1pdElu
Zm8pOworCisvKioKKyAqIENoZWNrIGlmIHR3byBmb3JtYXRzIGFyZSB2aWV3IGZvcm1hdCBjb21w
YXRpYmxlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQg
dG8gdXNlIGBiYXNlRm9ybWF0YCBmcm9tIGBrVGV4dHVyZUZvcm1hdEluZm9gLgorICovCitleHBv
cnQgZnVuY3Rpb24gdmlld0NvbXBhdGlibGUoYSwgYikgeworICByZXR1cm4gYSA9PT0gYiB8fCBh
ICsgJy1zcmdiJyA9PT0gYiB8fCBiICsgJy1zcmdiJyA9PT0gYTsKK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9jb25zdGFudHMuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvY29uc3RhbnRzLmpzCmluZGV4IDBmZjc5YzFj
MThiZC4uN2VkYjQ0OWYyMTQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvY29uc3RhbnRzLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9jb25zdGFudHMuanMKQEAgLTYzLDc1ICs2Myw1IEBAIGV4cG9ydCBjb25zdCBH
UFVDb25zdCA9IHsKICAgTWFwTW9kZSwKIH07CiAKLS8qKiBCYXNlIGxpbWl0cywgcGVyIHNwZWMu
ICovCi1leHBvcnQgY29uc3QgRGVmYXVsdExpbWl0cyA9IHsKLSAgbWF4VGV4dHVyZURpbWVuc2lv
bjFEOiA4MTkyLAotICBtYXhUZXh0dXJlRGltZW5zaW9uMkQ6IDgxOTIsCi0gIG1heFRleHR1cmVE
aW1lbnNpb24zRDogMjA0OCwKLSAgbWF4VGV4dHVyZUFycmF5TGF5ZXJzOiAyNTYsCi0KLSAgbWF4
QmluZEdyb3VwczogNCwKLSAgbWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlv
dXQ6IDgsCi0gIG1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0OiA0LAot
ICBtYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZTogMTYsCi0gIG1heFNhbXBsZXJzUGVy
U2hhZGVyU3RhZ2U6IDE2LAotICBtYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlOiA4LAot
ICBtYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZTogNCwKLSAgbWF4VW5pZm9ybUJ1ZmZl
cnNQZXJTaGFkZXJTdGFnZTogMTIsCi0KLSAgbWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplOiA2
NTUzNiwKLSAgbWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplOiAxMzQyMTc3MjgsCi0gIG1pblVu
aWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQ6IDI1NiwKLSAgbWluU3RvcmFnZUJ1ZmZlck9mZnNl
dEFsaWdubWVudDogMjU2LAotCi0gIG1heFZlcnRleEJ1ZmZlcnM6IDgsCi0gIG1heFZlcnRleEF0
dHJpYnV0ZXM6IDE2LAotICBtYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZTogMjA0OCwKLSAgbWF4
SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHM6IDYwLAotCi0gIG1heENvbXB1dGVXb3JrZ3JvdXBT
dG9yYWdlU2l6ZTogMTYzNTIsCi0gIG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cDog
MjU2LAotICBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVg6IDI1NiwKLSAgbWF4Q29tcHV0ZVdvcmtn
cm91cFNpemVZOiAyNTYsCi0gIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWjogNjQsCi0gIG1heENv
bXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uOiA2NTUzNSwKLX07Ci0KLWNoZWNrVHlwZShEZWZh
dWx0TGltaXRzKTsKLQotY29uc3Qga01heFVuc2lnbmVkTG9uZ1ZhbHVlID0gNDI5NDk2NzI5NTsK
LWNvbnN0IGtNYXhVbnNpZ25lZExvbmdMb25nVmFsdWUgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdF
UjsKLWV4cG9ydCBjb25zdCBMaW1pdE1heGltdW0gPSB7Ci0gIG1heFRleHR1cmVEaW1lbnNpb24x
RDoga01heFVuc2lnbmVkTG9uZ1ZhbHVlLAotICBtYXhUZXh0dXJlRGltZW5zaW9uMkQ6IGtNYXhV
bnNpZ25lZExvbmdWYWx1ZSwKLSAgbWF4VGV4dHVyZURpbWVuc2lvbjNEOiBrTWF4VW5zaWduZWRM
b25nVmFsdWUsCi0gIG1heFRleHR1cmVBcnJheUxheWVyczoga01heFVuc2lnbmVkTG9uZ1ZhbHVl
LAotCi0gIG1heEJpbmRHcm91cHM6IGtNYXhVbnNpZ25lZExvbmdWYWx1ZSwKLSAgbWF4RHluYW1p
Y1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQ6IGtNYXhVbnNpZ25lZExvbmdWYWx1ZSwK
LSAgbWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQ6IGtNYXhVbnNpZ25l
ZExvbmdWYWx1ZSwKLSAgbWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2U6IGtNYXhVbnNp
Z25lZExvbmdWYWx1ZSwKLSAgbWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZToga01heFVuc2lnbmVk
TG9uZ1ZhbHVlLAotICBtYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlOiBrTWF4VW5zaWdu
ZWRMb25nVmFsdWUsCi0gIG1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlOiBrTWF4VW5z
aWduZWRMb25nVmFsdWUsCi0gIG1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2U6IGtNYXhV
bnNpZ25lZExvbmdWYWx1ZSwKLQotICBtYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemU6IGtNYXhV
bnNpZ25lZExvbmdMb25nVmFsdWUsCi0gIG1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZToga01h
eFVuc2lnbmVkTG9uZ0xvbmdWYWx1ZSwKLSAgbWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVu
dDoga01heFVuc2lnbmVkTG9uZ1ZhbHVlLAotICBtaW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25t
ZW50OiBrTWF4VW5zaWduZWRMb25nVmFsdWUsCi0KLSAgbWF4VmVydGV4QnVmZmVyczoga01heFVu
c2lnbmVkTG9uZ1ZhbHVlLAotICBtYXhWZXJ0ZXhBdHRyaWJ1dGVzOiBrTWF4VW5zaWduZWRMb25n
VmFsdWUsCi0gIG1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlOiBrTWF4VW5zaWduZWRMb25nVmFs
dWUsCi0gIG1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzOiBrTWF4VW5zaWduZWRMb25nVmFs
dWUsCi0KLSAgbWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplOiBrTWF4VW5zaWduZWRMb25n
VmFsdWUsCi0gIG1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cDoga01heFVuc2lnbmVk
TG9uZ1ZhbHVlLAotICBtYXhDb21wdXRlV29ya2dyb3VwU2l6ZVg6IGtNYXhVbnNpZ25lZExvbmdW
YWx1ZSwKLSAgbWF4Q29tcHV0ZVdvcmtncm91cFNpemVZOiBrTWF4VW5zaWduZWRMb25nVmFsdWUs
Ci0gIG1heENvbXB1dGVXb3JrZ3JvdXBTaXplWjoga01heFVuc2lnbmVkTG9uZ1ZhbHVlLAotICBt
YXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbjoga01heFVuc2lnbmVkTG9uZ1ZhbHVlLAot
fTsKLQotY2hlY2tUeXBlKExpbWl0TWF4aW11bSk7CitleHBvcnQgY29uc3Qga01heFVuc2lnbmVk
TG9uZ1ZhbHVlID0gNDI5NDk2NzI5NTsKK2V4cG9ydCBjb25zdCBrTWF4VW5zaWduZWRMb25nTG9u
Z1ZhbHVlID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvZ3B1X3Rlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvZ3B1X3Rlc3QuanMKaW5kZXggOThiMjRmMjkzOTk0Li5kZTY0
NGZhYTljZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9ncHVfdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
Z3B1X3Rlc3QuanMKQEAgLTQsNyArNCw3IEBACiBpbXBvcnQgeyBhdHRlbXB0R2FyYmFnZUNvbGxl
Y3Rpb24gfSBmcm9tICcuLi9jb21tb24vdXRpbC9jb2xsZWN0X2dhcmJhZ2UuanMnOwogaW1wb3J0
IHsgYXNzZXJ0LCByYW5nZSwgdW5yZWFjaGFibGUgfSBmcm9tICcuLi9jb21tb24vdXRpbC91dGls
LmpzJzsKIAotaW1wb3J0IHsga1RleHR1cmVGb3JtYXRJbmZvLCBrUXVlcnlUeXBlSW5mbyB9IGZy
b20gJy4vY2FwYWJpbGl0eV9pbmZvLmpzJzsKK2ltcG9ydCB7IGtUZXh0dXJlRm9ybWF0SW5mbywg
a1F1ZXJ5VHlwZUluZm8sIHJlc29sdmVQZXJBc3BlY3RGb3JtYXQgfSBmcm9tICcuL2NhcGFiaWxp
dHlfaW5mby5qcyc7CiBpbXBvcnQgeyBtYWtlQnVmZmVyV2l0aENvbnRlbnRzIH0gZnJvbSAnLi91
dGlsL2J1ZmZlci5qcyc7CiBpbXBvcnQgewogICBjaGVja0VsZW1lbnRzRXF1YWwsCkBAIC0xNCw2
ICsxNCw3IEBAIGltcG9ydCB7CiBpbXBvcnQgeyBDb21tYW5kQnVmZmVyTWFrZXIgfSBmcm9tICcu
L3V0aWwvY29tbWFuZF9idWZmZXJfbWFrZXIuanMnOwogaW1wb3J0IHsgRGV2aWNlUG9vbCwgVGVz
dE9PTWVkU2hvdWxkQXR0ZW1wdEdDIH0gZnJvbSAnLi91dGlsL2RldmljZV9wb29sLmpzJzsKIGlt
cG9ydCB7IGFsaWduLCByb3VuZERvd24gfSBmcm9tICcuL3V0aWwvbWF0aC5qcyc7CitpbXBvcnQg
eyBtYWtlVGV4dHVyZVdpdGhDb250ZW50cyB9IGZyb20gJy4vdXRpbC90ZXh0dXJlLmpzJzsKIGlt
cG9ydCB7IGdldFRleHR1cmVDb3B5TGF5b3V0LCBnZXRUZXh0dXJlU3ViQ29weUxheW91dCB9IGZy
b20gJy4vdXRpbC90ZXh0dXJlL2xheW91dC5qcyc7CiBpbXBvcnQgeyBrVGV4ZWxSZXByZXNlbnRh
dGlvbkluZm8gfSBmcm9tICcuL3V0aWwvdGV4dHVyZS90ZXhlbF9kYXRhLmpzJzsKIApAQCAtNDcx
LDYgKzQ3Miw3IEBAIGV4cG9ydCBjbGFzcyBHUFVUZXN0IGV4dGVuZHMgRml4dHVyZSB7CiAgICAq
IEV4cGVjdCBhIHdob2xlIEdQVVRleHR1cmUgdG8gaGF2ZSB0aGUgc2luZ2xlIHByb3ZpZGVkIGNv
bG9yLgogICAgKi8KICAgZXhwZWN0U2luZ2xlQ29sb3Ioc3JjLCBmb3JtYXQsIHsgc2l6ZSwgZXhw
LCBkaW1lbnNpb24gPSAnMmQnLCBzbGljZSA9IDAsIGxheW91dCB9KSB7CisgICAgZm9ybWF0ID0g
cmVzb2x2ZVBlckFzcGVjdEZvcm1hdChmb3JtYXQsIGxheW91dD8uYXNwZWN0KTsKICAgICBjb25z
dCB7IGJ5dGVMZW5ndGgsIG1pbkJ5dGVzUGVyUm93LCBieXRlc1BlclJvdywgcm93c1BlckltYWdl
LCBtaXBTaXplIH0gPSBnZXRUZXh0dXJlQ29weUxheW91dCgKICAgICAgIGZvcm1hdCwKICAgICAg
IGRpbWVuc2lvbiwKQEAgLTQ5MCw3ICs0OTIsMTMgQEAgZXhwb3J0IGNsYXNzIEdQVVRlc3QgZXh0
ZW5kcyBGaXh0dXJlIHsKIAogICAgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gdGhpcy5kZXZpY2Uu
Y3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKICAgICBjb21tYW5kRW5jb2Rlci5jb3B5VGV4dHVyZVRv
QnVmZmVyKAotICAgICAgeyB0ZXh0dXJlOiBzcmMsIG1pcExldmVsOiBsYXlvdXQ/Lm1pcExldmVs
LCBvcmlnaW46IHsgeDogMCwgeTogMCwgejogc2xpY2UgfSB9LAorICAgICAgeworICAgICAgICB0
ZXh0dXJlOiBzcmMsCisgICAgICAgIG1pcExldmVsOiBsYXlvdXQ/Lm1pcExldmVsLAorICAgICAg
ICBvcmlnaW46IHsgeDogMCwgeTogMCwgejogc2xpY2UgfSwKKyAgICAgICAgYXNwZWN0OiBsYXlv
dXQ/LmFzcGVjdCwKKyAgICAgIH0sCisKICAgICAgIHsgYnVmZmVyLCBieXRlc1BlclJvdywgcm93
c1BlckltYWdlIH0sCiAgICAgICBtaXBTaXplCiAgICAgKTsKQEAgLTUwNyw3ICs1MTUsMTIgQEAg
ZXhwb3J0IGNsYXNzIEdQVVRlc3QgZXh0ZW5kcyBGaXh0dXJlIHsKIAogICAvKiogUmV0dXJuIGEg
R1BVQnVmZmVyIHRoYXQgZGF0YSBhcmUgZ29pbmcgdG8gYmUgd3JpdHRlbiBpbnRvLiAqLwogICBy
ZWFkU2luZ2xlUGl4ZWxGcm9tMkRUZXh0dXJlKHNyYywgZm9ybWF0LCB7IHgsIHkgfSwgeyBzbGlj
ZSA9IDAsIGxheW91dCB9KSB7Ci0gICAgY29uc3QgeyBieXRlTGVuZ3RoLCBieXRlc1BlclJvdywg
cm93c1BlckltYWdlIH0gPSBnZXRUZXh0dXJlU3ViQ29weUxheW91dChmb3JtYXQsIFsxLCAxXSk7
CisgICAgY29uc3QgeyBieXRlTGVuZ3RoLCBieXRlc1BlclJvdywgcm93c1BlckltYWdlIH0gPSBn
ZXRUZXh0dXJlU3ViQ29weUxheW91dCgKKyAgICAgIGZvcm1hdCwKKyAgICAgIFsxLCAxXSwKKyAg
ICAgIGxheW91dAorICAgICk7CisKICAgICBjb25zdCBidWZmZXIgPSB0aGlzLmRldmljZS5jcmVh
dGVCdWZmZXIoewogICAgICAgc2l6ZTogYnl0ZUxlbmd0aCwKICAgICAgIHVzYWdlOiBHUFVCdWZm
ZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNULApAQCAtNjgzLDYgKzY5
NiwxOCBAQCBleHBvcnQgY2xhc3MgR1BVVGVzdCBleHRlbmRzIEZpeHR1cmUgewogICAgIH0KICAg
fQogCisgIC8qKgorICAgKiBFeHBlY3RzIHRoYXQgdGhlIGRldmljZSBzaG91bGQgYmUgbG9zdCBm
b3IgYSBwYXJ0aWN1bGFyIHJlYXNvbiBhdCB0aGUgdGVhcmRvd24gb2YgdGhlIHRlc3QuCisgICAq
LworICBleHBlY3REZXZpY2VMb3N0KHJlYXNvbikgeworICAgIGFzc2VydCgKKyAgICAgIHRoaXMu
cHJvdmlkZXIgIT09IHVuZGVmaW5lZCwKKyAgICAgICdObyBwcm92aWRlciBhdmFpbGFibGUgcmln
aHQgbm93OyBkaWQgeW91ICJhd2FpdCIgc2VsZWN0RGV2aWNlT3JTa2lwVGVzdENhc2U/JworICAg
ICk7CisKKyAgICB0aGlzLnByb3ZpZGVyLmV4cGVjdERldmljZUxvc3QocmVhc29uKTsKKyAgfQor
CiAgIC8qKgogICAgKiBDcmVhdGUgYSBHUFVCdWZmZXIgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRl
bnRzIGFuZCB1c2FnZS4KICAgICoKQEAgLTY5Miw2ICs3MTcsMTMgQEAgZXhwb3J0IGNsYXNzIEdQ
VVRlc3QgZXh0ZW5kcyBGaXh0dXJlIHsKICAgICByZXR1cm4gdGhpcy50cmFja0ZvckNsZWFudXAo
bWFrZUJ1ZmZlcldpdGhDb250ZW50cyh0aGlzLmRldmljZSwgZGF0YUFycmF5LCB1c2FnZSkpOwog
ICB9CiAKKyAgLyoqCisgICAqIENyZWF0ZXMgYSB0ZXh0dXJlIHdpdGggdGhlIGNvbnRlbnRzIG9m
IGEgVGV4ZWxWaWV3LgorICAgKi8KKyAgbWFrZVRleHR1cmVXaXRoQ29udGVudHModGV4ZWxWaWV3
LCBkZXNjKSB7CisgICAgcmV0dXJuIHRoaXMudHJhY2tGb3JDbGVhbnVwKG1ha2VUZXh0dXJlV2l0
aENvbnRlbnRzKHRoaXMuZGV2aWNlLCB0ZXhlbFZpZXcsIGRlc2MpKTsKKyAgfQorCiAgIC8qKgog
ICAgKiBDcmVhdGUgYSBHUFVUZXh0dXJlIHdpdGggbXVsdGlwbGUgbWlwIGxldmVscywgZWFjaCBo
YXZpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50cy4KICAgICovCkBAIC03ODIsMzAgKzgxNCwyNyBA
QCBleHBvcnQgY2xhc3MgR1BVVGVzdCBleHRlbmRzIEZpeHR1cmUgewogICAgICAgY2FzZSAnbm9u
LXBhc3MnOiB7CiAgICAgICAgIGNvbnN0IGVuY29kZXIgPSB0aGlzLmRldmljZS5jcmVhdGVDb21t
YW5kRW5jb2RlcigpOwogCi0gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEJ1ZmZlck1ha2VyKHRo
aXMsIGVuY29kZXIsIHNob3VsZFN1Y2NlZWQgPT4KLSAgICAgICAgICB0aGlzLmV4cGVjdEdQVUVy
cm9yKCd2YWxpZGF0aW9uJywgKCkgPT4gZW5jb2Rlci5maW5pc2goKSwgIXNob3VsZFN1Y2NlZWQp
Ci0gICAgICAgICk7CisgICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEJ1ZmZlck1ha2VyKHRoaXMs
IGVuY29kZXIsICgpID0+IHsKKyAgICAgICAgICByZXR1cm4gZW5jb2Rlci5maW5pc2goKTsKKyAg
ICAgICAgfSk7CiAgICAgICB9CiAgICAgICBjYXNlICdyZW5kZXIgYnVuZGxlJzogewogICAgICAg
ICBjb25zdCBkZXZpY2UgPSB0aGlzLmRldmljZTsKICAgICAgICAgY29uc3QgcmJFbmNvZGVyID0g
ZGV2aWNlLmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoZnVsbEF0dGFjaG1lbnRJbmZvKTsKICAg
ICAgICAgY29uc3QgcGFzcyA9IHRoaXMuY3JlYXRlRW5jb2RlcigncmVuZGVyIHBhc3MnLCB7IGF0
dGFjaG1lbnRJbmZvIH0pOwogCi0gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEJ1ZmZlck1ha2Vy
KHRoaXMsIHJiRW5jb2Rlciwgc2hvdWxkU3VjY2VlZCA9PiB7Ci0gICAgICAgICAgLy8gSWYgIXNo
b3VsZFN1Y2NlZWQsIHRoZSByZXN1bHRpbmcgYnVuZGxlIHNob3VsZCBiZSBpbnZhbGlkLgotICAg
ICAgICAgIGNvbnN0IHJiID0gdGhpcy5leHBlY3RHUFVFcnJvcigndmFsaWRhdGlvbicsICgpID0+
IHJiRW5jb2Rlci5maW5pc2goKSwgIXNob3VsZFN1Y2NlZWQpOwotICAgICAgICAgIHBhc3MuZW5j
b2Rlci5leGVjdXRlQnVuZGxlcyhbcmJdKTsKLSAgICAgICAgICAvLyBUaGVuLCB0aGUgcGFzcyBz
aG91bGQgYWxzbyBiZSBpbnZhbGlkIGlmIHRoZSBidW5kbGUgd2FzIGludmFsaWQuCi0gICAgICAg
ICAgcmV0dXJuIHBhc3MudmFsaWRhdGVGaW5pc2goc2hvdWxkU3VjY2VlZCk7CisgICAgICAgIHJl
dHVybiBuZXcgQ29tbWFuZEJ1ZmZlck1ha2VyKHRoaXMsIHJiRW5jb2RlciwgKCkgPT4geworICAg
ICAgICAgIHBhc3MuZW5jb2Rlci5leGVjdXRlQnVuZGxlcyhbcmJFbmNvZGVyLmZpbmlzaCgpXSk7
CisgICAgICAgICAgcmV0dXJuIHBhc3MuZmluaXNoKCk7CiAgICAgICAgIH0pOwogICAgICAgfQog
ICAgICAgY2FzZSAnY29tcHV0ZSBwYXNzJzogewogICAgICAgICBjb25zdCBjb21tYW5kRW5jb2Rl
ciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CiAgICAgICAgIGNvbnN0IGVu
Y29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpbkNvbXB1dGVQYXNzKCk7CiAKLSAgICAgICAgcmV0
dXJuIG5ldyBDb21tYW5kQnVmZmVyTWFrZXIodGhpcywgZW5jb2Rlciwgc2hvdWxkU3VjY2VlZCA9
PiB7CisgICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEJ1ZmZlck1ha2VyKHRoaXMsIGVuY29kZXIs
ICgpID0+IHsKICAgICAgICAgICBlbmNvZGVyLmVuZCgpOwotICAgICAgICAgIHJldHVybiB0aGlz
LmV4cGVjdEdQVUVycm9yKCd2YWxpZGF0aW9uJywgKCkgPT4gY29tbWFuZEVuY29kZXIuZmluaXNo
KCksICFzaG91bGRTdWNjZWVkKTsKKyAgICAgICAgICByZXR1cm4gY29tbWFuZEVuY29kZXIuZmlu
aXNoKCk7CiAgICAgICAgIH0pOwogICAgICAgfQogICAgICAgY2FzZSAncmVuZGVyIHBhc3MnOiB7
CkBAIC04NDUsMTIgKzg3NCwxNiBAQCBleHBvcnQgY2xhc3MgR1BVVGVzdCBleHRlbmRzIEZpeHR1
cmUgewogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjb25zdCBwYXNzRGVzYyA9IHsK
LSAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzOiBBcnJheS5mcm9tKGZ1bGxBdHRhY2htZW50SW5m
by5jb2xvckZvcm1hdHMsIGZvcm1hdCA9PiAoewotICAgICAgICAgICAgdmlldzogbWFrZUF0dGFj
aG1lbnRWaWV3KGZvcm1hdCksCi0gICAgICAgICAgICBjbGVhclZhbHVlOiBbMCwgMCwgMCwgMF0s
Ci0gICAgICAgICAgICBsb2FkT3A6ICdjbGVhcicsCi0gICAgICAgICAgICBzdG9yZU9wOiAnc3Rv
cmUnLAotICAgICAgICAgIH0pKSwKKyAgICAgICAgICBjb2xvckF0dGFjaG1lbnRzOiBBcnJheS5m
cm9tKGZ1bGxBdHRhY2htZW50SW5mby5jb2xvckZvcm1hdHMsIGZvcm1hdCA9PgorICAgICAgICAg
ICAgZm9ybWF0CisgICAgICAgICAgICAgID8geworICAgICAgICAgICAgICAgICAgdmlldzogbWFr
ZUF0dGFjaG1lbnRWaWV3KGZvcm1hdCksCisgICAgICAgICAgICAgICAgICBjbGVhclZhbHVlOiBb
MCwgMCwgMCwgMF0sCisgICAgICAgICAgICAgICAgICBsb2FkT3A6ICdjbGVhcicsCisgICAgICAg
ICAgICAgICAgICBzdG9yZU9wOiAnc3RvcmUnLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgOiBudWxsCisgICAgICAgICAgKSwKIAogICAgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQsCiAgICAgICAgICAgb2NjbHVzaW9uUXVlcnlTZXQsCkBAIC04NTgsOSArODkxLDkgQEAg
ZXhwb3J0IGNsYXNzIEdQVVRlc3QgZXh0ZW5kcyBGaXh0dXJlIHsKIAogICAgICAgICBjb25zdCBj
b21tYW5kRW5jb2RlciA9IHRoaXMuZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7CiAgICAg
ICAgIGNvbnN0IGVuY29kZXIgPSBjb21tYW5kRW5jb2Rlci5iZWdpblJlbmRlclBhc3MocGFzc0Rl
c2MpOwotICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRCdWZmZXJNYWtlcih0aGlzLCBlbmNvZGVy
LCBzaG91bGRTdWNjZWVkID0+IHsKKyAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kQnVmZmVyTWFr
ZXIodGhpcywgZW5jb2RlciwgKCkgPT4gewogICAgICAgICAgIGVuY29kZXIuZW5kKCk7Ci0gICAg
ICAgICAgcmV0dXJuIHRoaXMuZXhwZWN0R1BVRXJyb3IoJ3ZhbGlkYXRpb24nLCAoKSA9PiBjb21t
YW5kRW5jb2Rlci5maW5pc2goKSwgIXNob3VsZFN1Y2NlZWQpOworICAgICAgICAgIHJldHVybiBj
b21tYW5kRW5jb2Rlci5maW5pc2goKTsKICAgICAgICAgfSk7CiAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2xpc3RpbmcuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvbGlzdGluZy5qcwppbmRleCAw
YThlNGIwZTE4MTIuLjc1YWEzZmE4MmY2YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2xpc3RpbmcuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2xpc3RpbmcuanMKQEAgLTIxOSw3ICsyMTksNyBAQCBleHBvcnQgY29u
c3QgbGlzdGluZyA9IFsKICAgICAgICJvcGVyYXRpb24iLAogICAgICAgIm1lbW9yeV9zeW5jIiwK
ICAgICAgICJidWZmZXIiLAotICAgICAgInJ3X2FuZF93ciIKKyAgICAgICJtdWx0aXBsZV9idWZm
ZXJzIgogICAgIF0KICAgfSwKICAgewpAQCAtMjI4LDcgKzIyOCw3IEBAIGV4cG9ydCBjb25zdCBs
aXN0aW5nID0gWwogICAgICAgIm9wZXJhdGlvbiIsCiAgICAgICAibWVtb3J5X3N5bmMiLAogICAg
ICAgImJ1ZmZlciIsCi0gICAgICAid3ciCisgICAgICAic2luZ2xlX2J1ZmZlciIKICAgICBdCiAg
IH0sCiAgIHsKQEAgLTQ2Myw2ICs0NjMsMTQgQEAgZXhwb3J0IGNvbnN0IGxpc3RpbmcgPSBbCiAg
ICAgICAiY29tcGlsYXRpb25faW5mbyIKICAgICBdCiAgIH0sCisgIHsKKyAgICAiZmlsZSI6IFsK
KyAgICAgICJhcGkiLAorICAgICAgIm9wZXJhdGlvbiIsCisgICAgICAidGV4dHVyZV92aWV3IiwK
KyAgICAgICJmb3JtYXRfcmVpbnRlcnByZXRhdGlvbiIKKyAgICBdCisgIH0sCiAgIHsKICAgICAi
ZmlsZSI6IFsKICAgICAgICJhcGkiLApAQCAtOTk0LDE1ICsxMDAyLDYgQEAgZXhwb3J0IGNvbnN0
IGxpc3RpbmcgPSBbCiAgICAgICAiQ29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUiCiAgICAgXQog
ICB9LAotICB7Ci0gICAgImZpbGUiOiBbCi0gICAgICAiYXBpIiwKLSAgICAgICJ2YWxpZGF0aW9u
IiwKLSAgICAgICJxdWV1ZSIsCi0gICAgICAiZGVzdHJveWVkIiwKLSAgICAgICJidWZmZXIiCi0g
ICAgXQotICB9LAogICB7CiAgICAgImZpbGUiOiBbCiAgICAgICAiYXBpIiwKQEAgLTExMDQsNiAr
MTEwMywxNSBAQCBleHBvcnQgY29uc3QgbGlzdGluZyA9IFsKICAgICBdLAogICAgICJyZWFkbWUi
OiAiVGVzdHMgb2YgYmVoYXZpb3Igd2hpbGUgdGhlIGRldmljZSBpcyBsb3N0LlxuXG4tIHg9IGV2
ZXJ5IG1ldGhvZCBpbiB0aGUgQVBJLlxuXG5UT0RPOiBpbXBsZW1lbnQiCiAgIH0sCisgIHsKKyAg
ICAiZmlsZSI6IFsKKyAgICAgICJhcGkiLAorICAgICAgInZhbGlkYXRpb24iLAorICAgICAgInN0
YXRlIiwKKyAgICAgICJkZXZpY2VfbG9zdCIsCisgICAgICAiZGVzdHJveSIKKyAgICBdCisgIH0s
CiAgIHsKICAgICAiZmlsZSI6IFsKICAgICAgICJhcGkiLApAQCAtMTE1MCw2ICsxMTU4LDEzIEBA
IGV4cG9ydCBjb25zdCBsaXN0aW5nID0gWwogICAgIF0sCiAgICAgInJlYWRtZSI6ICJUZXN0cyB0
aGF0IGNoZWNrIHRoZSByZXN1bHQgb2YgdmFsaWQgc2hhZGVyIGV4ZWN1dGlvbi4iCiAgIH0sCisg
IHsKKyAgICAiZmlsZSI6IFsKKyAgICAgICJzaGFkZXIiLAorICAgICAgImV4ZWN1dGlvbiIsCisg
ICAgICAiZXZhbHVhdGlvbl9vcmRlciIKKyAgICBdCisgIH0sCiAgIHsKICAgICAiZmlsZSI6IFsK
ICAgICAgICJzaGFkZXIiLApAQCAtMTE2OCw2ICsxMTgzLDE1IEBAIGV4cG9ydCBjb25zdCBsaXN0
aW5nID0gWwogICAgICAgImYzMl9hcml0aG1ldGljIgogICAgIF0KICAgfSwKKyAgeworICAgICJm
aWxlIjogWworICAgICAgInNoYWRlciIsCisgICAgICAiZXhlY3V0aW9uIiwKKyAgICAgICJleHBy
ZXNzaW9uIiwKKyAgICAgICJiaW5hcnkiLAorICAgICAgImYzMl9sb2dpY2FsIgorICAgIF0KKyAg
fSwKICAgewogICAgICJmaWxlIjogWwogICAgICAgInNoYWRlciIsCkBAIC0xNTk4LDYgKzE2MjIs
MTMgQEAgZXhwb3J0IGNvbnN0IGxpc3RpbmcgPSBbCiAgICAgICAibG9jYXRpb25zIgogICAgIF0K
ICAgfSwKKyAgeworICAgICJmaWxlIjogWworICAgICAgInNoYWRlciIsCisgICAgICAidmFsaWRh
dGlvbiIsCisgICAgICAidG9rZW5zIgorICAgIF0KKyAgfSwKICAgewogICAgICJmaWxlIjogWwog
ICAgICAgInNoYWRlciIsCkBAIC0xNjIwLDYgKzE2NTEsMTMgQEAgZXhwb3J0IGNvbnN0IGxpc3Rp
bmcgPSBbCiAgICAgICAidGV4ZWxfZGF0YSIKICAgICBdCiAgIH0sCisgIHsKKyAgICAiZmlsZSI6
IFsKKyAgICAgICJ1dGlsIiwKKyAgICAgICJ0ZXh0dXJlIiwKKyAgICAgICJ0ZXh0dXJlX29rIgor
ICAgIF0KKyAgfSwKICAgewogICAgICJmaWxlIjogWwogICAgICAgIndlYl9wbGF0Zm9ybSIKQEAg
LTE3MTUsNyArMTc1Myw3IEBAIGV4cG9ydCBjb25zdCBsaXN0aW5nID0gWwogICAgICAgIndlYl9w
bGF0Zm9ybSIsCiAgICAgICAicmVmdGVzdHMiCiAgICAgXSwKLSAgICAicmVhZG1lIjogIlJlZmVy
ZW5jZSB0ZXN0cyAocmVmdGVzdHMpIGZvciBXZWJHUFUgY2FudmFzIHByZXNlbnRhdGlvbi5cblxu
VGhlc2UgcmVuZGVyIHNvbWUgY29udGVudHMgdG8gYSBjYW52YXMgdXNpbmcgV2ViR1BVLCBhbmQg
V1BUIGNvbXBhcmVzIHRoZSByZW5kZXJpbmcgcmVzdWx0IHdpdGhcbnRoZSBcInJlZmVyZW5jZVwi
IHZlcnNpb25zIChpbiBgcmVmL2ApIHdoaWNoIHJlbmRlciB3aXRoIDJEIGNhbnZhcy5cblxuVGhp
cyB0ZXN0cyB0aGluZ3MgbGlrZTpcbi0gVGhlIGNhbnZhcyBoYXMgdGhlIGNvcnJlY3Qgb3JpZW50
YXRpb24uXG4tIFRoZSBjYW52YXMgcmVuZGVycyB3aXRoIHRoZSBjb3JyZWN0IHRyYW5zZmVyIGZ1
bmN0aW9uLlxuLSBUaGUgY2FudmFzIGJsZW5kcyBhbmQgaW50ZXJwb2xhdGVzIGluIHRoZSBjb3Jy
ZWN0IGNvbG9yIGVuY29kaW5nLlxuXG5UT0RPKCM5MTUpOiBjYW52YXNfY29tcGxleDogdGVzdCBy
Z2JhOHVub3JtIGFuZCByZ2JhMTZmbG9hdFxuVE9ETygjOTE2KTogY2FudmFzX2NvbXBsZXg6IFRl
c3QgYWxsIHdheXMgdG8gd3JpdGUgaW50byB0ZXh0dXJlcyAoY3VycmVudGx5IG9ubHkgdGVzdGlu
ZyBjb3B5IG1ldGhvZHMpLlxuVE9ETygjOTE4KTogVGVzdCBhbGwgcG9zc2libGUgY29sb3Igc3Bh
Y2VzIChvbmNlIHdlIGhhdmUgbW9yZSB0aGFuIDEpXG5cblRPRE8oIzkyMSk6IFdoeSBpcyB0aGVy
ZSBzb21ldGltZXMgYSBkaWZmZXJlbmNlIG9mIDEgKGUuZy4gM2YgdnMgNDApIGluIGNhbnZhc19z
aXplX2RpZmZlcmVudF93aXRoX2JhY2tfYnVmZmVyX3NpemU/XG5BbmQgd2h5IGRvZXMgY2hyb21p
dW0ncyBpbWFnZV9kaWZmIHNob3cgZGlmZnMgb24gb3RoZXIgcGl4ZWxzIHRoYXQgZG9uJ3Qgc2Vl
bSB0byBoYXZlIGRpZmZzPyIKKyAgICAicmVhZG1lIjogIlJlZmVyZW5jZSB0ZXN0cyAocmVmdGVz
dHMpIGZvciBXZWJHUFUgY2FudmFzIHByZXNlbnRhdGlvbi5cblxuVGhlc2UgcmVuZGVyIHNvbWUg
Y29udGVudHMgdG8gYSBjYW52YXMgdXNpbmcgV2ViR1BVLCBhbmQgV1BUIGNvbXBhcmVzIHRoZSBy
ZW5kZXJpbmcgcmVzdWx0IHdpdGhcbnRoZSBcInJlZmVyZW5jZVwiIHZlcnNpb25zIChpbiBgcmVm
L2ApIHdoaWNoIHJlbmRlciB3aXRoIDJEIGNhbnZhcy5cblxuVGhpcyB0ZXN0cyB0aGluZ3MgbGlr
ZTpcbi0gVGhlIGNhbnZhcyBoYXMgdGhlIGNvcnJlY3Qgb3JpZW50YXRpb24uXG4tIFRoZSBjYW52
YXMgcmVuZGVycyB3aXRoIHRoZSBjb3JyZWN0IHRyYW5zZmVyIGZ1bmN0aW9uLlxuLSBUaGUgY2Fu
dmFzIGJsZW5kcyBhbmQgaW50ZXJwb2xhdGVzIGluIHRoZSBjb3JyZWN0IGNvbG9yIGVuY29kaW5n
LlxuXG5UT0RPKCM5MTgpOiBUZXN0IGFsbCBwb3NzaWJsZSBjb2xvciBzcGFjZXMgKG9uY2Ugd2Ug
aGF2ZSBtb3JlIHRoYW4gMSlcblRPRE8oIzkyMSk6IFdoeSBpcyB0aGVyZSBzb21ldGltZXMgYSBk
aWZmZXJlbmNlIG9mIDEgKGUuZy4gM2YgdnMgNDApIGluIGNhbnZhc19zaXplX2RpZmZlcmVudF93
aXRoX2JhY2tfYnVmZmVyX3NpemU/XG5BbmQgd2h5IGRvZXMgY2hyb21pdW0ncyBpbWFnZV9kaWZm
IHNob3cgZGlmZnMgb24gb3RoZXIgcGl4ZWxzIHRoYXQgZG9uJ3Qgc2VlbSB0byBoYXZlIGRpZmZz
P1xuVE9ETygjMTA5Myk6IFRlc3QgcmdiYTE2ZmxvYXQgdmFsdWVzIHdoaWNoIGFyZSBvdXQgb2Yg
Z2FtdXQgb2YgdGhlIGNhbnZhcyBidXQgdW5kZXIgU0RSIGx1bWluYW5jZS5cblRPRE8oIzEwOTMp
OiBUZXN0IHJnYmExNmZsb2F0IHZhbHVlcyB3aGljaCBhcmUgYWJvdmUgU0RSIGx1bWluYW5jZS5c
blRPRE8oIzExMTYpOiBUZXN0IGNhbnZhcyBzY2FsaW5nLiIKICAgfSwKICAgewogICAgICJmaWxl
IjogWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3No
YWRlci9leGVjdXRpb24vZXZhbHVhdGlvbl9vcmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9ldmFsdWF0aW9uX29y
ZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjdlZjIyZTlhNDMxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V2YWx1YXRpb25fb3JkZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V2YWx1YXRpb25fb3JkZXIuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V2
YWx1YXRpb25fb3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmU3MzZmMzg4MTE0NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V2YWx1YXRpb25fb3JkZXIuaHRtbApA
QCAtMCwwICsxLDcgQEAKKworICAgICAgICAgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9j
YXRpb24uaHJlZiA9ICIvd2ViZ3B1L2N0cy5odHRwcy5odG1sP3E9d2ViZ3B1OnNoYWRlcixleGVj
dXRpb24sZXZhbHVhdGlvbl9vcmRlcjoqIjsKKyAgICAgICAgICAgICAgICA8L3NjcmlwdD4KKyAg
ICAgICAgICAgIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V2YWx1YXRp
b25fb3JkZXIuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9z
aGFkZXIvZXhlY3V0aW9uL2V2YWx1YXRpb25fb3JkZXIuc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg5NzY5NmEwZDIzNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V2
YWx1YXRpb25fb3JkZXIuc3BlYy5qcwpAQCAtMCwwICsxLDUwNSBAQAorLyoqCisgKiBBVVRPLUdF
TkVSQVRFRCAtIERPIE5PVCBFRElULiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIv
Y3RzCisgKiovIGV4cG9ydCBjb25zdCBkZXNjcmlwdGlvbiA9IGAKK0V4ZWN1dGlvbiBUZXN0cyBm
b3IgZXZhbHVhdGlvbiBvcmRlciBvZiBleHByZXNzaW9ucworYDsKK2ltcG9ydCB7IG1ha2VUZXN0
R3JvdXAgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnOwor
aW1wb3J0IHsgR1BVVGVzdCB9IGZyb20gJy4uLy4uL2dwdV90ZXN0LmpzJzsKK2ltcG9ydCB7IFR5
cGVJMzIgfSBmcm9tICcuLi8uLi91dGlsL2NvbnZlcnNpb24uanMnOworCitleHBvcnQgY29uc3Qg
ZyA9IG1ha2VUZXN0R3JvdXAoR1BVVGVzdCk7CisKK2NvbnN0IGNvbW1vbl9zb3VyY2UgPSBgCit2
YXI8cHJpdmF0ZT4gYSA6IGkzMiA9IDI7Cit2YXI8cHJpdmF0ZT4gYiA6IGkzMiA9IDM7Cit2YXI8
cHJpdmF0ZT4gYyA6IGkzMiA9IDQ7CisKK3Zhcjxwcml2YXRlPiBhcnIyRCA6IGFycmF5PGFycmF5
PGkzMiwgMTA+LCAxMD4gPSBhcnJheTxhcnJheTxpMzIsIDEwPiwgMTA+KAorICBhcnJheTxpMzIs
IDEwPiggMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSksCisgIGFycmF5PGkz
MiwgMTA+KDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5KSwKKyAgYXJyYXk8
aTMyLCAxMD4oMjAsIDIyLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjkpLAorICBhcnJh
eTxpMzIsIDEwPigzMCwgMzIsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzMyksCisgIGFy
cmF5PGkzMiwgMTA+KDQwLCA0MiwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ0KSwKKyAg
YXJyYXk8aTMyLCAxMD4oNTAsIDUyLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTUpLAor
ICBhcnJheTxpMzIsIDEwPig2MCwgNjIsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2Niks
CisgIGFycmF5PGkzMiwgMTA+KDcwLCA3MiwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc3
KSwKKyAgYXJyYXk8aTMyLCAxMD4oODAsIDgyLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwg
OTgpLAorICBhcnJheTxpMzIsIDEwPig5MCwgOTIsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4
LCA5OSksCispOworCit2YXI8cHJpdmF0ZT4gYXJyMURfemVybyA6IGFycmF5PGkzMiwgNTA+Owor
dmFyPHByaXZhdGU+IGFycjJEX3plcm8gOiBhcnJheTxhcnJheTxpMzIsIDUwPiwgNTA+OwordmFy
PHByaXZhdGU+IGFycjNEX3plcm8gOiBhcnJheTxhcnJheTxhcnJheTxpMzIsIDUwPiwgNTA+LCA1
MD47CisKK3Zhcjxwcml2YXRlPiB2ZWM0X3plcm8gOiB2ZWM0PGkzMj47CisKK3N0cnVjdCBTIHsK
KyAgeCA6IGkzMiwKKyAgeSA6IGkzMiwKKyAgeiA6IGkzMiwKK30KKworZm4gbXVsKHAxIDogcHRy
PHByaXZhdGUsIGkzMj4sIG11bHRpcGxpY2FuZCA6IGkzMikgLT4gaTMyIHsKKyAgKnAxID0gKnAx
ICogbXVsdGlwbGljYW5kOworICByZXR1cm4gKnAxOworfQorCitmbiBhZGQocDEgOiBwdHI8cHJp
dmF0ZSwgaTMyPiwgYWRkZW5kIDogaTMyKSAtPiBpMzIgeworICAqcDEgPSAqcDEgKyBhZGRlbmQ7
CisgIHJldHVybiAqcDE7Cit9CisKK2ZuIHN1Yl9tdWwzKGEgOiBpMzIsIGFfbXVsIDogaTMyLCBi
IDogaTMyLCBiX211bCA6IGkzMiwgYyA6IGkzMiwgY19tdWwgOiBpMzIpIC0+IGkzMiB7CisgIHJl
dHVybiBhICogYV9tdWwgLSBiICogYl9tdWwgLSBjICogY19tdWw7Cit9CisKK2ZuIHN1Yl9tdWw0
KGEgOiBpMzIsIGFfbXVsIDogaTMyLCBiIDogaTMyLCBiX211bCA6IGkzMiwgYyA6IGkzMiwgY19t
dWwgOiBpMzIsIGQgOiBpMzIsIGRfbXVsIDogaTMyKSAtPiBpMzIgeworICByZXR1cm4gYSAqIGFf
bXVsIC0gYiAqIGJfbXVsIC0gYyAqIGNfbXVsIC0gZCAqIGRfbXVsOworfQorCitmbiBzZXRfdmVj
NF94KHAgOiBwdHI8cHJpdmF0ZSwgdmVjNDxpMzI+PiwgdiA6IGkzMikgLT4gaTMyIHsKKyAgKCpw
KS54ID0gdjsKKyAgcmV0dXJuIDA7Cit9CisKK2ZuIG1ha2VfUyhpbml0IDogaTMyKSAtPiBTIHsK
KyAgcmV0dXJuIFMoaW5pdCwgaW5pdCwgaW5pdCk7Cit9CisKK2ZuIG11bDNfcmV0MChwMSA6IHB0
cjxwcml2YXRlLCBpMzI+LCBwMiA6IHB0cjxwcml2YXRlLCBpMzI+LCBwMyA6IHB0cjxwcml2YXRl
LCBpMzI+LCBtdWx0aXBsaWNhbmQgOiBpMzIpIC0+IGkzMiB7CisgICpwMSA9ICpwMSAqIG11bHRp
cGxpY2FuZDsKKyAgKnAyID0gKnAyICogbXVsdGlwbGljYW5kOworICAqcDMgPSAqcDMgKiBtdWx0
aXBsaWNhbmQ7CisgIHJldHVybiAwOworfQorYDsKKworZy50ZXN0KCdiaW5hcnlfYXJpdGgnKQor
ICAuc3BlY1VSTCgnaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi93Z3NsLyNhcml0aG1l
dGljLWV4cHInKQorICAuZGVzYygnVGVzdHMgb3JkZXIgb2YgZXZhbHVhdGlvbiBvZiBhcml0aG1l
dGljIGJpbmFyeSBleHByZXNzaW9ucy4nKQorICAucGFyYW1zU2ltcGxlKFsKKyAgICB7CisgICAg
ICBuYW1lOiAnQm90aFNFJywgLy8gU0UgPSBTaWRlIEVmZmVjdHMKKyAgICAgIF9ib2R5OiAncmV0
dXJuIG11bCgmYSwgMTApIC0gbXVsKCZhLCAxMCk7JywKKyAgICAgIF9yZXN1bHQ6IDIwIC0gMjAw
LAorICAgIH0sCisKKyAgICB7CisgICAgICBuYW1lOiAnTGVmdFNFJywgLy8KKyAgICAgIF9ib2R5
OiAncmV0dXJuIG11bCgmYSwgMTApIC0gYTsnLAorICAgICAgX3Jlc3VsdDogMjAgLSAyMCwKKyAg
ICB9LAorCisgICAgeworICAgICAgbmFtZTogJ1JpZ2h0U0UnLCAvLworICAgICAgX2JvZHk6ICdy
ZXR1cm4gYSAtIG11bCgmYSwgMTApOycsCisgICAgICBfcmVzdWx0OiAyIC0gMjAsCisgICAgfSwK
KworICAgIHsKKyAgICAgIG5hbWU6ICdUaHJlZVNFJywKKyAgICAgIF9ib2R5OiAncmV0dXJuIG11
bCgmYSwgMTApIC0gbXVsKCZhLCAxMCkgLSBtdWwoJmEsIDEwKTsnLAorICAgICAgX3Jlc3VsdDog
MjAgLSAyMDAgLSAyMDAwLAorICAgIH0sCisKKyAgICB7CisgICAgICBuYW1lOiAnTGVmdG1vc3RT
RScsCisgICAgICBfYm9keTogJ3JldHVybiBtdWwzX3JldDAoJmEsICZiLCAmYywgMTApIC0gYSAt
IGIgLSBjOycsCisgICAgICBfcmVzdWx0OiAwIC0gMjAgLSAzMCAtIDQwLAorICAgIH0sCisKKyAg
ICB7CisgICAgICBuYW1lOiAnUmlnaHRtb3N0U0UnLCAvLworICAgICAgX2JvZHk6ICdyZXR1cm4g
YSAtIGIgLSBjIC0gbXVsM19yZXQwKCZhLCAmYiwgJmMsIDEwKTsnLAorICAgICAgX3Jlc3VsdDog
MiAtIDMgLSA0IC0gMCwKKyAgICB9LAorCisgICAgeworICAgICAgbmFtZTogJ01pZGRsZVNFJywg
Ly8KKyAgICAgIF9ib2R5OiAncmV0dXJuIGEgLSBiIC0gbXVsM19yZXQwKCZhLCAmYiwgJmMsIDEw
KSAtIGM7JywKKyAgICAgIF9yZXN1bHQ6IDIgLSAzIC0gMCAtIDQwLAorICAgIH0sCisKKyAgICB7
CisgICAgICBuYW1lOiAnTGl0ZXJhbEFuZFNFQW5kVmFyJywgLy8KKyAgICAgIF9ib2R5OiAncmV0
dXJuIDEgLSBtdWwoJmEsIDEwKSAtIGE7JywKKyAgICAgIF9yZXN1bHQ6IDEgLSAyMCAtIDIwLAor
ICAgIH0sCisKKyAgICB7CisgICAgICBuYW1lOiAnVmFyQW5kU0VBbmRMaXRlcmFsJywgLy8KKyAg
ICAgIF9ib2R5OiAncmV0dXJuIGEgLSBtdWwoJmEsIDEwKSAtIDE7JywKKyAgICAgIF9yZXN1bHQ6
IDIgLSAyMCAtIDEsCisgICAgfSwKKworICAgIHsKKyAgICAgIG5hbWU6ICdTRUFuZFZhckFuZExp
dGVyYWwnLCAvLworICAgICAgX2JvZHk6ICdyZXR1cm4gbXVsKCZhLCAxMCkgLSBhIC0gMTsnLAor
ICAgICAgX3Jlc3VsdDogMjAgLSAyMCAtIDEsCisgICAgfSwKKworICAgIHsKKyAgICAgIG5hbWU6
ICdWYXJBbmRMaXRlcmFsQW5kU0UnLCAvLworICAgICAgX2JvZHk6ICdyZXR1cm4gYSAtIDEgLSBt
dWwoJmEsIDEwKTsnLAorICAgICAgX3Jlc3VsdDogMiAtIDEgLSAyMCwKKyAgICB9LAorCisgICAg
eworICAgICAgbmFtZTogJ01lbWJlckFjY2Vzc0FuZFNFJywKKyAgICAgIF9ib2R5OiAncmV0dXJu
IHZlYzRfemVyby54ICsgc2V0X3ZlYzRfeCgmdmVjNF96ZXJvLCA0Mik7JywKKyAgICAgIF9yZXN1
bHQ6IDAsCisgICAgfSwKKworICAgIHsKKyAgICAgIG5hbWU6ICdTRUFuZE1lbWJlckFjY2Vzcycs
CisgICAgICBfYm9keTogJ3JldHVybiBzZXRfdmVjNF94KCZ2ZWM0X3plcm8sIDQyKSArIHZlYzRf
emVyby54OycsCisgICAgICBfcmVzdWx0OiA0MiwKKyAgICB9LAorICBdKQorICAuZm4odCA9PiBy
dW4odCwgdC5wYXJhbXMuX2JvZHksIHQucGFyYW1zLl9yZXN1bHQpKTsKKworZy50ZXN0KCdiaW5h
cnlfbG9naWNhbCcpCisgIC5zcGVjVVJMKCdodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2Vi
L3dnc2wvI2xvZ2ljYWwtZXhwcicpCisgIC5kZXNjKCdUZXN0cyBvcmRlciBvZiBldmFsdWF0aW9u
IG9mIGxvZ2ljYWwgYmluYXJ5IGV4cHJlc3Npb25zLicpCisgIC5wYXJhbXNTaW1wbGUoWworICAg
IHsKKyAgICAgIG5hbWU6ICdCb3RoU0UnLAorICAgICAgX2JvZHk6CisgICAgICAgICdsZXQgciA9
IChhZGQoJmEsIDEpID09IDMpICYmIChhZGQoJmEsIDEpID09IDQpOycgKyAvLworICAgICAgICAn
cmV0dXJuIGkzMihyKTsnLAorICAgICAgX3Jlc3VsdDogMSwKKyAgICB9LAorCisgICAgeworICAg
ICAgbmFtZTogJ0xlZnRTRScsCisgICAgICBfYm9keToKKyAgICAgICAgJ2xldCByID0gKGFkZCgm
YSwgMSkgPT0gMykgJiYgKGEgPT0gMyk7JyArIC8vCisgICAgICAgICdyZXR1cm4gaTMyKHIpOycs
CisgICAgICBfcmVzdWx0OiAxLAorICAgIH0sCisKKyAgICB7CisgICAgICBuYW1lOiAnUmlnaHRT
RScsCisgICAgICBfYm9keToKKyAgICAgICAgJ2xldCByID0gKGEgPT0gMikgJiYgKGFkZCgmYSwg
MSkgPT0gMyk7JyArIC8vCisgICAgICAgICdyZXR1cm4gaTMyKHIpOycsCisgICAgICBfcmVzdWx0
OiAxLAorICAgIH0sCisKKyAgICB7CisgICAgICBuYW1lOiAnTGVmdG1vc3RTRScsCisgICAgICBf
Ym9keToKKyAgICAgICAgJ2xldCByID0gKG11bDNfcmV0MCgmYSwgJmIsICZjLCAxMCkgPT0gMCkg
JiYgKGEgPT0gMjApICYmIChiID09IDMwKSAmJiAoYyA9PSA0MCk7JyArCisgICAgICAgICdyZXR1
cm4gaTMyKHIpOycsCisgICAgICBfcmVzdWx0OiAxLAorICAgIH0sCisKKyAgICB7CisgICAgICBu
YW1lOiAnUmlnaHRtb3N0U0UnLAorICAgICAgX2JvZHk6CisgICAgICAgICdsZXQgciA9IChhID09
IDIpICYmIChiID09IDMpICYmIChjID09IDQpICYmIChtdWwzX3JldDAoJmEsICZiLCAmYywgMTAp
ID09IDApOycgKworICAgICAgICAncmV0dXJuIGkzMihyKTsnLAorICAgICAgX3Jlc3VsdDogMSwK
KyAgICB9LAorCisgICAgeworICAgICAgbmFtZTogJ01pZGRsZVNFJywKKyAgICAgIF9ib2R5Ogor
ICAgICAgICAnbGV0IHIgPSAoYSA9PSAyKSAmJiAoYiA9PSAzKSAmJiAobXVsM19yZXQwKCZhLCAm
YiwgJmMsIDEwKSA9PSAwKSAmJiAoYyA9PSA0MCk7JyArCisgICAgICAgICdyZXR1cm4gaTMyKHIp
OycsCisgICAgICBfcmVzdWx0OiAxLAorICAgIH0sCisKKyAgICB7CisgICAgICBuYW1lOiAnU2hv
cnRDaXJjdWl0X0FuZF9MaHNPbmx5JywKKyAgICAgIF9ib2R5OgorICAgICAgICAvLyByaHMgc2hv
dWxkIG5vdCBleGVjdXRlCisgICAgICAgICdsZXQgdCA9IChhICE9IDIpICYmIChtdWwoJmEsIDEw
KSA9PSAyMCk7JyArIC8vCisgICAgICAgICdyZXR1cm4gYTsnLAorICAgICAgX3Jlc3VsdDogMiwK
KyAgICB9LAorCisgICAgeworICAgICAgbmFtZTogJ1Nob3J0Q2lyY3VpdF9BbmRfTGhzQW5kUmhz
JywKKyAgICAgIF9ib2R5OgorICAgICAgICAvLyByaHMgc2hvdWxkIGV4ZWN1dGUKKyAgICAgICAg
J2xldCB0ID0gKGEgPT0gMikgJiYgKG11bCgmYSwgMTApID09IDIwKTsnICsgLy8KKyAgICAgICAg
J3JldHVybiBhOycsCisgICAgICBfcmVzdWx0OiAyMCwKKyAgICB9LAorCisgICAgeworICAgICAg
bmFtZTogJ1Nob3J0Q2lyY3VpdF9Pcl9MaHNPbmx5JywKKyAgICAgIF9ib2R5OgorICAgICAgICAv
LyByaHMgc2hvdWxkIG5vdCBleGVjdXRlCisgICAgICAgICdsZXQgdCA9IChhID09IDIpIHx8ICht
dWwoJmEsIDEwKSA9PSAyMCk7JyArIC8vCisgICAgICAgICdsZXQgciA9IChhID09IDIpOycgKwor
ICAgICAgICAncmV0dXJuIGkzMihyKTsnLAorICAgICAgX3Jlc3VsdDogMSwKKyAgICB9LAorCisg
ICAgeworICAgICAgbmFtZTogJ1Nob3J0Q2lyY3VpdF9Pcl9MaHNBbmRSaHMnLAorICAgICAgX2Jv
ZHk6CisgICAgICAgIC8vIHJocyBzaG91bGQgZXhlY3V0ZQorICAgICAgICAnbGV0IHQgPSAoYSAh
PSAyKSB8fCAobXVsKCZhLCAxMCkgPT0gMjApOycgKyAvLworICAgICAgICAnbGV0IHIgPSAoYSA9
PSAyMCk7JyArCisgICAgICAgICdyZXR1cm4gaTMyKHIpOycsCisgICAgICBfcmVzdWx0OiAxLAor
ICAgIH0sCisgIF0pCisgIC5mbih0ID0+IHJ1bih0LCB0LnBhcmFtcy5fYm9keSwgdC5wYXJhbXMu
X3Jlc3VsdCkpOworCitnLnRlc3QoJ2JpbmFyeV9taXhlZCcpCisgIC5zcGVjVVJMKCdodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViL3dnc2wvI2FyaXRobWV0aWMtZXhwcicpCisgIC5zcGVj
VVJMKCdodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViL3dnc2wvI2xvZ2ljYWwtZXhwcicp
CisgIC5kZXNjKCdUZXN0cyBvcmRlciBvZiBldmFsdWF0aW9uIG9mIGJvdGggYXJpdGhtZXRpYyBh
bmQgbG9naWNhbCBiaW5hcnkgZXhwcmVzc2lvbnMuJykKKyAgLnBhcmFtc1NpbXBsZShbCisgICAg
eworICAgICAgbmFtZTogJ0FyaXRoQW5kTG9naWNhbCcsCisgICAgICBfYm9keTogJ3JldHVybiBt
dWwoJmEsIDEwKSAtIGkzMihtdWwoJmEsIDEwKSA9PSAyMDAgJiYgbXVsKCZhLCAxMCkgPT0gMjAw
MCk7JywKKyAgICAgIF9yZXN1bHQ6IDIwIC0gMSwKKyAgICB9LAorCisgICAgeworICAgICAgbmFt
ZTogJ0xvZ2ljYWxBbmRBcml0aCcsCisgICAgICBfYm9keTogJ3JldHVybiBpMzIobXVsKCZhLCAx
MCkgPT0gMjAgJiYgbXVsKCZhLCAxMCkgPT0gMjAwKSAtIG11bCgmYSwgMTApOycsCisgICAgICBf
cmVzdWx0OiAxIC0gMjAwMCwKKyAgICB9LAorCisgICAgeworICAgICAgbmFtZTogJ0FyaXRoQW5k
TG9naWNhbF9TaG9ydENpcmN1aXQnLAorICAgICAgX2JvZHk6ICdyZXR1cm4gbXVsKCZhLCAxMCkg
LSBpMzIobXVsKCZhLCAxMCkgIT0gMjAwICYmIG11bCgmYSwgMTApID09IDIwMDApOycsCisgICAg
ICBfcmVzdWx0OiAyMCAtIDAsCisgICAgfSwKKworICAgIHsKKyAgICAgIG5hbWU6ICdMb2dpY2Fs
QW5kQXJpdGhfU2hvcnRDaXJjdWl0JywKKyAgICAgIF9ib2R5OiAncmV0dXJuIGkzMihtdWwoJmEs
IDEwKSAhPSAyMCAmJiBtdWwoJmEsIDEwKSA9PSAyMDApIC0gbXVsKCZhLCAxMCk7JywKKyAgICAg
IF9yZXN1bHQ6IDAgLSAyMDAsCisgICAgfSwKKyAgXSkKKyAgLmZuKHQgPT4gcnVuKHQsIHQucGFy
YW1zLl9ib2R5LCB0LnBhcmFtcy5fcmVzdWx0KSk7CisKK2cudGVzdCgnY2FsbCcpCisgIC5zcGVj
VVJMKCdodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViL3dnc2wvI2Z1bmN0aW9uLWNhbGxz
JykKKyAgLmRlc2MoJ1Rlc3RzIG9yZGVyIG9mIGV2YWx1YXRpb24gb2YgY2FsbCBleHByZXNzaW9u
cy4nKQorICAucGFyYW1zU2ltcGxlKFsKKyAgICB7CisgICAgICBuYW1lOiAnT25lU0UnLCAvLwor
ICAgICAgX2JvZHk6ICdyZXR1cm4gc3ViX211bDMobXVsKCZhLCAyKSwgMiwgYSwgMywgMywgNCk7
JywKKyAgICAgIF9yZXN1bHQ6IDQgKiAyIC0gNCAqIDMgLSAzICogNCwKKyAgICB9LAorCisgICAg
eworICAgICAgbmFtZTogJ0FsbFNFJywKKyAgICAgIF9ib2R5OiAncmV0dXJuIHN1Yl9tdWwzKG11
bCgmYSwgMiksIDIsIG11bCgmYSwgMiksIDMsIG11bCgmYSwgMiksIDQpOycsCisgICAgICBfcmVz
dWx0OiA0ICogMiAtIDggKiAzIC0gMTYgKiA0LAorICAgIH0sCisKKyAgICB7CisgICAgICBuYW1l
OiAnTWlkZGxlTm90U0UnLAorICAgICAgX2JvZHk6ICdyZXR1cm4gc3ViX211bDMobXVsKCZhLCAy
KSwgMiwgYSwgMywgbXVsKCZhLCAyKSwgNCk7JywKKyAgICAgIF9yZXN1bHQ6IDQgKiAyIC0gNCAq
IDMgLSA4ICogNCwKKyAgICB9LAorICBdKQorICAuZm4odCA9PiBydW4odCwgdC5wYXJhbXMuX2Jv
ZHksIHQucGFyYW1zLl9yZXN1bHQpKTsKKworZy50ZXN0KCdpbmRleF9hY2Nlc3NvcicpCisgIC5z
cGVjVVJMKCdodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViL3dnc2wvI2FycmF5LWFjY2Vz
cy1leHByJykKKyAgLmRlc2MoJ1Rlc3RzIG9yZGVyIG9mIGV2YWx1YXRpb24gb2YgaW5kZXggYWNj
ZXNzb3IgZXhwcmVzc2lvbnMuJykKKyAgLnBhcmFtc1NpbXBsZShbCisgICAgeworICAgICAgbmFt
ZTogJ0xlZnRTRScsIC8vCisgICAgICBfYm9keTogJ3JldHVybiBhcnIyRFttdWwoJmEsIDIpXVth
XTsnLAorICAgICAgX3Jlc3VsdDogNCAqIDEwICsgNCwKKyAgICB9LAorCisgICAgeworICAgICAg
bmFtZTogJ1JpZ2h0U0UnLCAvLworICAgICAgX2JvZHk6ICdyZXR1cm4gYXJyMkRbYV1bbXVsKCZh
LCAyKV07JywKKyAgICAgIF9yZXN1bHQ6IDIgKiAxMCArIDQsCisgICAgfSwKKworICAgIHsKKyAg
ICAgIG5hbWU6ICdCb3RoU0UnLAorICAgICAgX2JvZHk6ICdyZXR1cm4gYXJyMkRbbXVsKCZhLCAy
KV1bbXVsKCZhLCAyKV07JywKKyAgICAgIF9yZXN1bHQ6IDQgKiAxMCArIDgsCisgICAgfSwKKyAg
XSkKKyAgLmZuKHQgPT4gcnVuKHQsIHQucGFyYW1zLl9ib2R5LCB0LnBhcmFtcy5fcmVzdWx0KSk7
CisKK2cudGVzdCgnYXNzaWdubWVudCcpCisgIC5zcGVjVVJMKCdodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViL3dnc2wvI2Fzc2lnbm1lbnQnKQorICAuZGVzYygnVGVzdHMgb3JkZXIgb2Yg
ZXZhbHVhdGlvbiBvZiBhc3NpZ25tZW50IHN0YXRlbWVudHMuJykKKyAgLnBhcmFtc1NpbXBsZShb
CisgICAgeworICAgICAgbmFtZTogJ1RvQXJyYXkxRCcsCisgICAgICBfYm9keToKKyAgICAgICAg
J2FycjFEX3plcm9bbXVsKCZhLCAyKV0gPSBtdWwoJmEsIDIpOycgKyAvLworICAgICAgICAncmV0
dXJuIGFycjFEX3plcm9bOF07JywKKyAgICAgIF9yZXN1bHQ6IDQsCisgICAgfSwKKworICAgIHsK
KyAgICAgIG5hbWU6ICdUb0FycmF5MkQnLAorICAgICAgX2JvZHk6CisgICAgICAgICdhcnIyRF96
ZXJvW211bCgmYSwgMildW211bCgmYSwgMildID0gbXVsKCZhLCAyKTsnICsgLy8KKyAgICAgICAg
J3JldHVybiBhcnIyRF96ZXJvWzhdWzE2XTsnLAorICAgICAgX3Jlc3VsdDogNCwKKyAgICB9LAor
CisgICAgeworICAgICAgbmFtZTogJ1RvQXJyYXlGcm9tQXJyYXknLAorICAgICAgX2JvZHk6Cisg
ICAgICAgICdhcnIyRF96ZXJvWzRdWzhdID0gMTIzOycgKworICAgICAgICAnYXJyMURfemVyb1tt
dWwoJmEsIDIpXSA9IGFycjJEX3plcm9bbXVsKCZhLCAyKV1bbXVsKCZhLCAyKV07JyArCisgICAg
ICAgICdyZXR1cm4gYXJyMURfemVyb1sxNl07JywKKyAgICAgIF9yZXN1bHQ6IDEyMywKKyAgICB9
LAorCisgICAgeworICAgICAgbmFtZTogJ1RvQXJyYXlJbmRleGVkQnlBcnJheUluZGV4ZWRCeVNF
JywKKyAgICAgIF9ib2R5OgorICAgICAgICAndmFyIGFycjEgPSBhcnIxRF96ZXJvOycgKworICAg
ICAgICAndmFyIGFycjIgPSBhcnIxRF96ZXJvOycgKworICAgICAgICAnYXJyMls4XSA9IDM7JyAr
CisgICAgICAgICdhcnIxW2FycjJbbXVsKCZhLCAyKV1dID0gbXVsKCZhLCAyKTsnICsKKyAgICAg
ICAgJ3JldHVybiBhcnIxWzNdOycsCisgICAgICBfcmVzdWx0OiA0LAorICAgIH0sCisKKyAgICB7
CisgICAgICBuYW1lOiAnVG9WZWNfQm90aFNFJywKKyAgICAgIF9ib2R5OgorICAgICAgICAnYSA9
IDA7JyArCisgICAgICAgICd2ZWM0X3plcm9bYWRkKCZhLCAxKV0gPSBhZGQoJmEsIDEpOycgKyAv
LworICAgICAgICAncmV0dXJuIHZlYzRfemVyb1syXTsnLAorICAgICAgX3Jlc3VsdDogMSwKKyAg
ICB9LAorCisgICAgeworICAgICAgbmFtZTogJ1RvVmVjX0xlZnRTRScsCisgICAgICBfYm9keToK
KyAgICAgICAgJ3ZlYzRfemVyb1thZGQoJmEsIDEpXSA9IGE7JyArIC8vCisgICAgICAgICdyZXR1
cm4gdmVjNF96ZXJvWzNdOycsCisgICAgICBfcmVzdWx0OiAyLAorICAgIH0sCisKKyAgICB7Cisg
ICAgICBuYW1lOiAnVG9WZWNfUmlnaHRTRScsCisgICAgICBfYm9keToKKyAgICAgICAgJ3ZlYzRf
emVyb1thXSA9IGFkZCgmYSwgMSk7JyArIC8vCisgICAgICAgICdyZXR1cm4gdmVjNF96ZXJvWzNd
OycsCisgICAgICBfcmVzdWx0OiAzLAorICAgIH0sCisgIF0pCisgIC5mbih0ID0+IHJ1bih0LCB0
LnBhcmFtcy5fYm9keSwgdC5wYXJhbXMuX3Jlc3VsdCkpOworCitnLnRlc3QoJ3R5cGVfY29uc3Ry
dWN0b3InKQorICAuc3BlY1VSTCgnaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi93Z3Ns
LyN0eXBlLWNvbnN0cnVjdG9yLWV4cHInKQorICAuZGVzYygnVGVzdHMgb3JkZXIgb2YgZXZhbHVh
dGlvbiBvZiB0eXBlIGNvbnN0cnVjdG9yIGV4cHJlc3Npb25zLicpCisgIC5wYXJhbXNTaW1wbGUo
WworICAgIHsKKyAgICAgIG5hbWU6ICdTdHJ1Y3QnLAorICAgICAgX2JvZHk6CisgICAgICAgICds
ZXQgciA9IFMobXVsKCZhLCAyKSwgbXVsKCZhLCAyKSwgbXVsKCZhLCAyKSk7JyArIC8vCisgICAg
ICAgICdyZXR1cm4gc3ViX211bDMoci54LCAyLCByLnksIDMsIHIueiwgNCk7JywKKyAgICAgIF9y
ZXN1bHQ6IDQgKiAyIC0gOCAqIDMgLSAxNiAqIDQsCisgICAgfSwKKworICAgIHsKKyAgICAgIG5h
bWU6ICdBcnJheTFEJywKKyAgICAgIF9ib2R5OgorICAgICAgICAnbGV0IHIgPSBhcnJheTxpMzIs
IDM+KG11bCgmYSwgMiksIG11bCgmYSwgMiksIG11bCgmYSwgMikpOycgKyAvLworICAgICAgICAn
cmV0dXJuIHN1Yl9tdWwzKHJbMF0sIDIsIHJbMV0sIDMsIHJbMl0sIDQpOycsCisgICAgICBfcmVz
dWx0OiA0ICogMiAtIDggKiAzIC0gMTYgKiA0LAorICAgIH0sCisKKyAgICB7CisgICAgICBuYW1l
OiAnQXJyYXkyRCcsCisgICAgICBfYm9keToKKyAgICAgICAgJ2xldCByID0gYXJyYXk8YXJyYXk8
aTMyLCAyPiwgMj4oYXJyYXk8aTMyLCAyPihtdWwoJmEsIDIpLCBtdWwoJmEsIDIpKSwgYXJyYXk8
aTMyLCAyPihtdWwoJmEsIDIpLCBtdWwoJmEsIDIpKSk7JyArCisgICAgICAgICdyZXR1cm4gc3Vi
X211bDQoclswXVswXSwgMiwgclswXVsxXSwgMywgclsxXVswXSwgNCwgclsxXVsxXSwgNSk7JywK
KyAgICAgIF9yZXN1bHQ6IDQgKiAyIC0gOCAqIDMgLSAxNiAqIDQgLSAzMiAqIDUsCisgICAgfSwK
KyAgXSkKKyAgLmZuKHQgPT4gcnVuKHQsIHQucGFyYW1zLl9ib2R5LCB0LnBhcmFtcy5fcmVzdWx0
KSk7CisKK2cudGVzdCgnbWVtYmVyX2FjY2Vzc29yJykKKyAgLnNwZWNVUkwoJ2h0dHBzOi8vZ3B1
d2ViLmdpdGh1Yi5pby9ncHV3ZWIvd2dzbC8jc3RydWN0LWFjY2Vzcy1leHByJykKKyAgLnNwZWNV
UkwoJ2h0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvd2dzbC8jdmVjdG9yLWFjY2Vzcy1l
eHByJykKKyAgLmRlc2MoJ1Rlc3RzIG9yZGVyIG9mIGV2YWx1YXRpb24gb2YgbWVtYmVyIGFjY2Vz
c29yIGV4cHJlc3Npb25zLicpCisgIC5wYXJhbXNTaW1wbGUoWworICAgIHsKKyAgICAgIG5hbWU6
ICdWZWMnLAorICAgICAgX2JvZHk6ICdyZXR1cm4gdmVjMyhtdWwoJmEsIDIpKS54IC0gdmVjMyht
dWwoJmEsIDMpKS54OycsCisgICAgICBfcmVzdWx0OiA0IC0gMTIsCisgICAgfSwKKworICAgIHsK
KyAgICAgIG5hbWU6ICdTdHJ1Y3QnLAorICAgICAgX2JvZHk6ICdyZXR1cm4gbWFrZV9TKG11bCgm
YSwgMikpLnggLSBtYWtlX1MobXVsKCZhLCAzKSkueDsnLAorICAgICAgX3Jlc3VsdDogNCAtIDEy
LAorICAgIH0sCisgIF0pCisgIC5mbih0ID0+IHJ1bih0LCB0LnBhcmFtcy5fYm9keSwgdC5wYXJh
bXMuX3Jlc3VsdCkpOworCitmdW5jdGlvbiBydW4odCwgYm9keSwgcmVzdWx0KSB7CisgIC8vIFdH
U0wgc291cmNlCisgIGNvbnN0IHNvdXJjZSA9CisgICAgY29tbW9uX3NvdXJjZSArCisgICAgYAor
Zm4gdGVzdF9ib2R5KCkgLT4gaTMyIHsKKyAgJHtib2R5fQorfQorCitAZ3JvdXAoMCkgQGJpbmRp
bmcoMCkgdmFyPHN0b3JhZ2UsIHdyaXRlPiBvdXRwdXQgOiBpMzI7CisKK0BzdGFnZShjb21wdXRl
KSBAd29ya2dyb3VwX3NpemUoMSkKK2ZuIG1haW4oKSB7CisgIG91dHB1dCA9IHRlc3RfYm9keSgp
OworfQorYDsKKworICAvLyBDb25zdHJ1Y3QgYSBidWZmZXIgdG8gaG9sZCB0aGUgcmVzdWx0cyBv
ZiB0aGUgZXhwcmVzc2lvbiB0ZXN0cworICBjb25zdCBvdXRwdXRCdWZmZXJTaXplID0gNDsgLy8g
cmVzdWx0IDogaTMyCisgIGNvbnN0IG91dHB1dEJ1ZmZlciA9IHQuZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih7CisgICAgc2l6ZTogb3V0cHV0QnVmZmVyU2l6ZSwKKyAgICB1c2FnZTogR1BVQnVmZmVyVXNh
Z2UuQ09QWV9TUkMgfCBHUFVCdWZmZXJVc2FnZS5TVE9SQUdFLAorICB9KTsKKworICBjb25zdCBt
b2R1bGUgPSB0LmRldmljZS5jcmVhdGVTaGFkZXJNb2R1bGUoeyBjb2RlOiBzb3VyY2UgfSk7Cisg
IGNvbnN0IHBpcGVsaW5lID0gdC5kZXZpY2UuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKHsKKyAgICBj
b21wdXRlOiB7IG1vZHVsZSwgZW50cnlQb2ludDogJ21haW4nIH0sCisgIH0pOworCisgIGNvbnN0
IGdyb3VwID0gdC5kZXZpY2UuY3JlYXRlQmluZEdyb3VwKHsKKyAgICBsYXlvdXQ6IHBpcGVsaW5l
LmdldEJpbmRHcm91cExheW91dCgwKSwKKyAgICBlbnRyaWVzOiBbeyBiaW5kaW5nOiAwLCByZXNv
dXJjZTogeyBidWZmZXI6IG91dHB1dEJ1ZmZlciB9IH1dLAorICB9KTsKKworICBjb25zdCBlbmNv
ZGVyID0gdC5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKKyAgY29uc3QgcGFzcyA9IGVu
Y29kZXIuYmVnaW5Db21wdXRlUGFzcygpOworICBwYXNzLnNldFBpcGVsaW5lKHBpcGVsaW5lKTsK
KyAgcGFzcy5zZXRCaW5kR3JvdXAoMCwgZ3JvdXApOworICBwYXNzLmRpc3BhdGNoKDEpOworICBw
YXNzLmVuZCgpOworCisgIHQucXVldWUuc3VibWl0KFtlbmNvZGVyLmZpbmlzaCgpXSk7CisKKyAg
Y29uc3QgY2hlY2tFeHBlY3RhdGlvbiA9IG91dHB1dERhdGEgPT4geworICAgIGNvbnN0IG91dHB1
dCA9IFR5cGVJMzIucmVhZChvdXRwdXREYXRhLCAwKTsKKyAgICBjb25zdCBnb3QgPSBvdXRwdXQu
dmFsdWU7CisgICAgY29uc3QgZXhwZWN0ZWQgPSByZXN1bHQ7CisgICAgaWYgKGdvdCAhPT0gZXhw
ZWN0ZWQpIHsKKyAgICAgIHJldHVybiBuZXcgRXJyb3IoYHJldHVybmVkOiAke2dvdH0sIGV4cGVj
dGVkOiAke2V4cGVjdGVkfWApOworICAgIH0KKyAgICByZXR1cm4gdW5kZWZpbmVkOworICB9Owor
CisgIHQuZXhwZWN0R1BVQnVmZmVyVmFsdWVzUGFzc0NoZWNrKG91dHB1dEJ1ZmZlciwgY2hlY2tF
eHBlY3RhdGlvbiwgeworICAgIHR5cGU6IFVpbnQ4QXJyYXksCisgICAgdHlwZWRMZW5ndGg6IG91
dHB1dEJ1ZmZlclNpemUsCisgIH0pOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMy
X2FyaXRobWV0aWMuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vYmluYXJ5L2YzMl9hcml0aG1ldGljLnNwZWMu
anMKaW5kZXggMTZjNTIxMTk0MWY0Li5kNGVjYjExMTc1ZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24v
YmluYXJ5L2YzMl9hcml0aG1ldGljLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2Fy
aXRobWV0aWMuc3BlYy5qcwpAQCAtNSwzMSArNSw2NCBAQCBFeGVjdXRpb24gVGVzdHMgZm9yIHRo
ZSBmMzIgYXJpdGhtZXRpYyBiaW5hcnkgZXhwcmVzc2lvbiBvcGVyYXRpb25zCiBgOwogaW1wb3J0
IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdvcmsv
dGVzdF9ncm91cC5qcyc7CiBpbXBvcnQgeyBHUFVUZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vZ3B1
X3Rlc3QuanMnOwotaW1wb3J0IHsgY29ycmVjdGx5Um91bmRlZFRocmVzaG9sZCwgdWxwVGhyZXNo
b2xkIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9jb21wYXJlLmpzJzsKLWltcG9ydCB7IGtWYWx1
ZSB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvY29uc3RhbnRzLmpzJzsKK2ltcG9ydCB7IGFueU9m
LCBjb3JyZWN0bHlSb3VuZGVkVGhyZXNob2xkLCB1bHBUaHJlc2hvbGQgfSBmcm9tICcuLi8uLi8u
Li8uLi91dGlsL2NvbXBhcmUuanMnOwogaW1wb3J0IHsgZjMyLCBUeXBlRjMyIH0gZnJvbSAnLi4v
Li4vLi4vLi4vdXRpbC9jb252ZXJzaW9uLmpzJzsKLWltcG9ydCB7IGJpYXNlZFJhbmdlLCBsaW5l
YXJSYW5nZSwgcXVhbnRpemVUb0YzMiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvbWF0aC5qcyc7
CitpbXBvcnQgeworICBiaWFzZWRSYW5nZSwKKyAgZnVsbEYzMlJhbmdlLAorICBpc1N1Ym5vcm1h
bE51bWJlciwKKyAgcXVhbnRpemVUb0YzMiwKK30gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9tYXRo
LmpzJzsKIGltcG9ydCB7IHJ1biB9IGZyb20gJy4uL2V4cHJlc3Npb24uanMnOwogCiBpbXBvcnQg
eyBiaW5hcnkgfSBmcm9tICcuL2JpbmFyeS5qcyc7CiAKIGV4cG9ydCBjb25zdCBnID0gbWFrZVRl
c3RHcm91cChHUFVUZXN0KTsKIAotLyogR2VuZXJhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgc3By
ZWFkIG92ZXIgdGhlIGVudGlyZSByYW5nZSBvZiAzMi1iaXQgZmxvYXRzICovCi1mdW5jdGlvbiBm
dWxsTnVtZXJpY1JhbmdlKCkgewotICBjb25zdCBudW1lcmljX3JhbmdlID0gQXJyYXkoKTsKLSAg
bnVtZXJpY19yYW5nZS5jb25jYXQoYmlhc2VkUmFuZ2Uoa1ZhbHVlLmYzMi5uZWdhdGl2ZS5tYXgs
IGtWYWx1ZS5mMzIubmVnYXRpdmUubWluLCAxMDApKTsKLSAgbnVtZXJpY19yYW5nZS5jb25jYXQo
Ci0gICAgbGluZWFyUmFuZ2Uoa1ZhbHVlLmYzMi5zdWJub3JtYWwubmVnYXRpdmUubWluLCBrVmFs
dWUuZjMyLnN1Ym5vcm1hbC5uZWdhdGl2ZS5tYXgsIDEwMCkKLSAgKTsKLQotICBudW1lcmljX3Jh
bmdlLmNvbmNhdCgwLjApOwotICBudW1lcmljX3JhbmdlLmNvbmNhdCgKLSAgICBsaW5lYXJSYW5n
ZShrVmFsdWUuZjMyLnN1Ym5vcm1hbC5wb3NpdGl2ZS5taW4sIGtWYWx1ZS5mMzIuc3Vibm9ybWFs
LnBvc2l0aXZlLm1heCwgMTAwKQotICApOwotCi0gIG51bWVyaWNfcmFuZ2UuY29uY2F0KGJpYXNl
ZFJhbmdlKGtWYWx1ZS5mMzIucG9zaXRpdmUubWluLCBrVmFsdWUuZjMyLnBvc2l0aXZlLm1heCwg
MTAwKSk7Ci0gIHJldHVybiBudW1lcmljX3JhbmdlOworLyoqCisgKiBQcm9kdWNlcyBhbGwgb2Yg
dGhlIHJlc3VsdHMgZm9yIGEgYmluYXJ5IG9wIGFuZCBhIHNwZWNpZmljIHBhaXIgb2YgcGFyYW1z
LCBhY2NvdW50aW5nIGZvciBpZiBzdWJub3JtYWwgcmVzdWx0cyBjYW4gYmUKKyAqIGZsdXNoZWQg
dG8gemVyby4KKyAqIERvZXMgbm90IGFjY291bnQgZm9yIHRoZSBpbnB1dHMgYmVpbmcgZmx1c2hl
ZC4KKyAqIEBwYXJhbSBsaHMgdGhlIGxlZnQgaGFuZCBzaWRlIHRvIHBhc3MgaW50byB0aGUgYmlu
YXJ5IG9wZXJhdGlvbgorICogQHBhcmFtIHJocyB0aGUgcmhzIGhhbmQgc2lkZSB0byBwYXNzIGlu
dG8gdGhlIGJpbmFyeSBvcGVyYXRpb24KKyAqIEBwYXJhbSBvcCBjYWxsYmFjayB0aGF0IGltcGxl
bWVudHMgdGhlIHRydXRoIGZ1bmN0aW9uIGZvciB0aGUgYmluYXJ5IG9wZXJhdGlvbgorICovCitm
dW5jdGlvbiBjYWxjdWxhdGVSZXN1bHRzKGxocywgcmhzLCBvcCkgeworICBjb25zdCByZXN1bHRz
ID0gW107CisgIGNvbnN0IHZhbHVlID0gb3AobGhzLCByaHMpOworICByZXN1bHRzLnB1c2goZjMy
KHZhbHVlKSk7CisgIGlmIChpc1N1Ym5vcm1hbE51bWJlcih2YWx1ZSkpIHsKKyAgICByZXN1bHRz
LnB1c2goZjMyKDAuMCkpOworICB9CisgIHJldHVybiByZXN1bHRzOworfQorCisvKioKKyAqIEdl
bmVyYXRlcyBhIENhc2UgZm9yIHRoZSBwYXJhbXMgYW5kIGJpbmFyeSBvcCBwcm92aWRlLgorICog
QHBhcmFtIGxocyB0aGUgbGVmdCBoYW5kIHNpZGUgdG8gcGFzcyBpbnRvIHRoZSBiaW5hcnkgb3Bl
cmF0aW9uCisgKiBAcGFyYW0gcmhzIHRoZSByaHMgaGFuZCBzaWRlIHRvIHBhc3MgaW50byB0aGUg
YmluYXJ5IG9wZXJhdGlvbgorICogQHBhcmFtIG9wIGNhbGxiYWNrIHRoYXQgaW1wbGVtZW50cyB0
aGUgdHJ1dGggZnVuY3Rpb24gZm9yIHRoZSBiaW5hcnkgb3BlcmF0aW9uCisgKiBAcGFyYW0gc2tp
cF9yaHNfemVyb19mbHVzaCBzaG91bGQgdGhlIGJ1aWxkZXIgc2tpcCBjYXNlcyB3aGVyZSB0aGUg
cmhzIHdvdWxkIGJlIGZsdXNoZWQgdG8gMCwgdGhpcyBpcyBwcmltYXJpbHkgZm9yCisgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdm9pZCBkb2luZyBkaXZpc2lvbiBieSAwLiBUaGUgY2Fs
bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgaW5pdGlhbCByaHMgaXNuJ3QK
KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuCisgKi8KK2Z1bmN0aW9uIG1ha2VDYXNl
SW1wbChsaHMsIHJocywgb3AsIHNraXBfcmhzX3plcm9fZmx1c2ggPSBmYWxzZSkgeworICBjb25z
dCBmMzJfbGhzID0gcXVhbnRpemVUb0YzMihsaHMpOworICBjb25zdCBmMzJfcmhzID0gcXVhbnRp
emVUb0YzMihyaHMpOworICBjb25zdCBpc19saHNfc3Vibm9ybWFsID0gaXNTdWJub3JtYWxOdW1i
ZXIoZjMyX2xocyk7CisgIGNvbnN0IGlzX3Joc19zdWJub3JtYWwgPSBpc1N1Ym5vcm1hbE51bWJl
cihmMzJfcmhzKTsKKyAgY29uc3QgZXhwZWN0ZWQgPSBjYWxjdWxhdGVSZXN1bHRzKGYzMl9saHMs
IGYzMl9yaHMsIG9wKTsKKyAgaWYgKGlzX2xoc19zdWJub3JtYWwpIHsKKyAgICBleHBlY3RlZC5w
dXNoKC4uLmNhbGN1bGF0ZVJlc3VsdHMoMC4wLCBmMzJfcmhzLCBvcCkpOworICB9CisgIGlmICgh
c2tpcF9yaHNfemVyb19mbHVzaCAmJiBpc19yaHNfc3Vibm9ybWFsKSB7CisgICAgZXhwZWN0ZWQu
cHVzaCguLi5jYWxjdWxhdGVSZXN1bHRzKGYzMl9saHMsIDAuMCwgb3ApKTsKKyAgfQorICBpZiAo
IXNraXBfcmhzX3plcm9fZmx1c2ggJiYgaXNfbGhzX3N1Ym5vcm1hbCAmJiBpc19yaHNfc3Vibm9y
bWFsKSB7CisgICAgZXhwZWN0ZWQucHVzaCguLi5jYWxjdWxhdGVSZXN1bHRzKDAuMCwgMC4wLCBv
cCkpOworICB9CisKKyAgcmV0dXJuIHsgaW5wdXQ6IFtmMzIobGhzKSwgZjMyKHJocyldLCBleHBl
Y3RlZDogYW55T2YoLi4uZXhwZWN0ZWQpIH07CiB9CiAKIGcudGVzdCgnYWRkaXRpb24nKQpAQCAt
NTEsMTYgKzg0LDE2IEBAIEFjY3VyYWN5OiBDb3JyZWN0bHkgcm91bmRlZAogICAgIGNmZy5jbXBG
bG9hdHMgPSBjb3JyZWN0bHlSb3VuZGVkVGhyZXNob2xkKCk7CiAKICAgICBjb25zdCBtYWtlQ2Fz
ZSA9IChsaHMsIHJocykgPT4gewotICAgICAgY29uc3QgZjMyX2xocyA9IHF1YW50aXplVG9GMzIo
bGhzKTsKLSAgICAgIGNvbnN0IGYzMl9yaHMgPSBxdWFudGl6ZVRvRjMyKHJocyk7Ci0gICAgICBy
ZXR1cm4geyBpbnB1dDogW2YzMihsaHMpLCBmMzIocmhzKV0sIGV4cGVjdGVkOiBmMzIoZjMyX2xo
cyArIGYzMl9yaHMpIH07CisgICAgICByZXR1cm4gbWFrZUNhc2VJbXBsKGxocywgcmhzLCAobCwg
cikgPT4geworICAgICAgICByZXR1cm4gbCArIHI7CisgICAgICB9KTsKICAgICB9OwogCi0gICAg
bGV0IGNhc2VzID0gW107Ci0gICAgY29uc3QgbnVtZXJpY19yYW5nZSA9IGZ1bGxOdW1lcmljUmFu
Z2UoKTsKKyAgICBjb25zdCBjYXNlcyA9IFtdOworICAgIGNvbnN0IG51bWVyaWNfcmFuZ2UgPSBm
dWxsRjMyUmFuZ2UoKTsKICAgICBudW1lcmljX3JhbmdlLmZvckVhY2gobGhzID0+IHsKICAgICAg
IG51bWVyaWNfcmFuZ2UuZm9yRWFjaChyaHMgPT4gewotICAgICAgICBjYXNlcyA9IGNhc2VzLmNv
bmNhdChtYWtlQ2FzZShsaHMsIHJocykpOworICAgICAgICBjYXNlcy5wdXNoKG1ha2VDYXNlKGxo
cywgcmhzKSk7CiAgICAgICB9KTsKICAgICB9KTsKIApAQCAtODYsMTYgKzExOSwxNiBAQCBBY2N1
cmFjeTogQ29ycmVjdGx5IHJvdW5kZWQKICAgICBjZmcuY21wRmxvYXRzID0gY29ycmVjdGx5Um91
bmRlZFRocmVzaG9sZCgpOwogCiAgICAgY29uc3QgbWFrZUNhc2UgPSAobGhzLCByaHMpID0+IHsK
LSAgICAgIGNvbnN0IGYzMl9saHMgPSBxdWFudGl6ZVRvRjMyKGxocyk7Ci0gICAgICBjb25zdCBm
MzJfcmhzID0gcXVhbnRpemVUb0YzMihyaHMpOwotICAgICAgcmV0dXJuIHsgaW5wdXQ6IFtmMzIo
bGhzKSwgZjMyKHJocyldLCBleHBlY3RlZDogZjMyKGYzMl9saHMgLSBmMzJfcmhzKSB9OworICAg
ICAgcmV0dXJuIG1ha2VDYXNlSW1wbChsaHMsIHJocywgKGwsIHIpID0+IHsKKyAgICAgICAgcmV0
dXJuIGwgLSByOworICAgICAgfSk7CiAgICAgfTsKIAotICAgIGxldCBjYXNlcyA9IFtdOwotICAg
IGNvbnN0IG51bWVyaWNfcmFuZ2UgPSBmdWxsTnVtZXJpY1JhbmdlKCk7CisgICAgY29uc3QgY2Fz
ZXMgPSBbXTsKKyAgICBjb25zdCBudW1lcmljX3JhbmdlID0gZnVsbEYzMlJhbmdlKCk7CiAgICAg
bnVtZXJpY19yYW5nZS5mb3JFYWNoKGxocyA9PiB7CiAgICAgICBudW1lcmljX3JhbmdlLmZvckVh
Y2gocmhzID0+IHsKLSAgICAgICAgY2FzZXMgPSBjYXNlcy5jb25jYXQobWFrZUNhc2UobGhzLCBy
aHMpKTsKKyAgICAgICAgY2FzZXMucHVzaChtYWtlQ2FzZShsaHMsIHJocykpOwogICAgICAgfSk7
CiAgICAgfSk7CiAKQEAgLTEyMSwxNiArMTU0LDE2IEBAIEFjY3VyYWN5OiBDb3JyZWN0bHkgcm91
bmRlZAogICAgIGNmZy5jbXBGbG9hdHMgPSBjb3JyZWN0bHlSb3VuZGVkVGhyZXNob2xkKCk7CiAK
ICAgICBjb25zdCBtYWtlQ2FzZSA9IChsaHMsIHJocykgPT4gewotICAgICAgY29uc3QgZjMyX2xo
cyA9IHF1YW50aXplVG9GMzIobGhzKTsKLSAgICAgIGNvbnN0IGYzMl9yaHMgPSBxdWFudGl6ZVRv
RjMyKHJocyk7Ci0gICAgICByZXR1cm4geyBpbnB1dDogW2YzMihsaHMpLCBmMzIocmhzKV0sIGV4
cGVjdGVkOiBmMzIoZjMyX2xocyAqIGYzMl9yaHMpIH07CisgICAgICByZXR1cm4gbWFrZUNhc2VJ
bXBsKGxocywgcmhzLCAobCwgcikgPT4geworICAgICAgICByZXR1cm4gbCAqIHI7CisgICAgICB9
KTsKICAgICB9OwogCi0gICAgbGV0IGNhc2VzID0gW107Ci0gICAgY29uc3QgbnVtZXJpY19yYW5n
ZSA9IGZ1bGxOdW1lcmljUmFuZ2UoKTsKKyAgICBjb25zdCBjYXNlcyA9IFtdOworICAgIGNvbnN0
IG51bWVyaWNfcmFuZ2UgPSBmdWxsRjMyUmFuZ2UoKTsKICAgICBudW1lcmljX3JhbmdlLmZvckVh
Y2gobGhzID0+IHsKICAgICAgIG51bWVyaWNfcmFuZ2UuZm9yRWFjaChyaHMgPT4gewotICAgICAg
ICBjYXNlcyA9IGNhc2VzLmNvbmNhdChtYWtlQ2FzZShsaHMsIHJocykpOworICAgICAgICBjYXNl
cy5wdXNoKG1ha2VDYXNlKGxocywgcmhzKSk7CiAgICAgICB9KTsKICAgICB9KTsKIApAQCAtMTU2
LDE3ICsxODksMjQgQEAgQWNjdXJhY3k6IDIuNSBVTFAgZm9yIHx5fCBpbiB0aGUgcmFuZ2UgWzJe
LTEyNiwgMl4xMjZdCiAgICAgY2ZnLmNtcEZsb2F0cyA9IHVscFRocmVzaG9sZCgyLjUpOwogCiAg
ICAgY29uc3QgbWFrZUNhc2UgPSAobGhzLCByaHMpID0+IHsKLSAgICAgIGNvbnN0IGYzMl9saHMg
PSBxdWFudGl6ZVRvRjMyKGxocyk7Ci0gICAgICBjb25zdCBmMzJfcmhzID0gcXVhbnRpemVUb0Yz
MihyaHMpOwotICAgICAgcmV0dXJuIHsgaW5wdXQ6IFtmMzIobGhzKSwgZjMyKHJocyldLCBleHBl
Y3RlZDogZjMyKGYzMl9saHMgLyBmMzJfcmhzKSB9OworICAgICAgcmV0dXJuIG1ha2VDYXNlSW1w
bCgKKyAgICAgICAgbGhzLAorICAgICAgICByaHMsCisgICAgICAgIChsLCByKSA9PiB7CisgICAg
ICAgICAgcmV0dXJuIGwgLyByOworICAgICAgICB9LAorICAgICAgICB0cnVlCisgICAgICApOwog
ICAgIH07CiAKLSAgICBsZXQgY2FzZXMgPSBbXTsKLSAgICBjb25zdCBsaHNfbnVtZXJpY19yYW5n
ZSA9IGZ1bGxOdW1lcmljUmFuZ2UoKTsKLSAgICBjb25zdCByaHNfbnVtZXJpY19yYW5nZSA9IGJp
YXNlZFJhbmdlKDIgKiogLTEyNiwgMiAqKiAxMjYsIDIwMCk7CisgICAgY29uc3QgY2FzZXMgPSBb
XTsKKyAgICBjb25zdCBsaHNfbnVtZXJpY19yYW5nZSA9IGZ1bGxGMzJSYW5nZSgpOworICAgIGNv
bnN0IHJoc19udW1lcmljX3JhbmdlID0gYmlhc2VkUmFuZ2UoMiAqKiAtMTI2LCAyICoqIDEyNiwg
MjAwKS5maWx0ZXIodmFsdWUgPT4geworICAgICAgcmV0dXJuIHZhbHVlICE9PSAwLjA7CisgICAg
fSk7CiAgICAgbGhzX251bWVyaWNfcmFuZ2UuZm9yRWFjaChsaHMgPT4gewogICAgICAgcmhzX251
bWVyaWNfcmFuZ2UuZm9yRWFjaChyaHMgPT4gewotICAgICAgICBjYXNlcyA9IGNhc2VzLmNvbmNh
dChtYWtlQ2FzZShsaHMsIHJocykpOworICAgICAgICBjYXNlcy5wdXNoKG1ha2VDYXNlKGxocywg
cmhzKSk7CiAgICAgICB9KTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkv
ZjMyX2xvZ2ljYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2xvZ2ljYWwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2VmMjJl
OWE0MzFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2xvZ2ljYWwtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vYmluYXJ5
L2YzMl9sb2dpY2FsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
c2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2JpbmFyeS9mMzJfbG9naWNhbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzk2ZGUwMWUxNTllCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9l
eGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2xvZ2ljYWwuaHRtbApAQCAtMCwwICsxLDcg
QEAKKworICAgICAgICAgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9
ICIvd2ViZ3B1L2N0cy5odHRwcy5odG1sP3E9d2ViZ3B1OnNoYWRlcixleGVjdXRpb24sZXhwcmVz
c2lvbixiaW5hcnksZjMyX2xvZ2ljYWw6KiI7CisgICAgICAgICAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgICAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNz
aW9uL2JpbmFyeS9mMzJfbG9naWNhbC5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2xvZ2lj
YWwuc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjQxNjM3
Njc1MDhjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vYmluYXJ5L2YzMl9sb2dpY2FsLnNw
ZWMuanMKQEAgLTAsMCArMSwyMTcgQEAKKy8qKgorICogQVVUTy1HRU5FUkFURUQgLSBETyBOT1Qg
RURJVC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cworICoqLyBleHBvcnQg
Y29uc3QgZGVzY3JpcHRpb24gPSBgCitFeGVjdXRpb24gVGVzdHMgZm9yIHRoZSBmMzIgbG9naWNh
bCBiaW5hcnkgZXhwcmVzc2lvbiBvcGVyYXRpb25zCitgOworaW1wb3J0IHsgbWFrZVRlc3RHcm91
cCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7
CitpbXBvcnQgeyBHUFVUZXN0IH0gZnJvbSAnLi4vLi4vLi4vLi4vZ3B1X3Rlc3QuanMnOworaW1w
b3J0IHsgYW55T2YgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlsL2NvbXBhcmUuanMnOworaW1wb3J0
IHsgYm9vbCwgZjMyLCBUeXBlQm9vbCwgVHlwZUYzMiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwv
Y29udmVyc2lvbi5qcyc7CitpbXBvcnQgeyBmbHVzaFN1Ym5vcm1hbFNjYWxhciwgZnVsbEYzMlJh
bmdlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9tYXRoLmpzJzsKK2ltcG9ydCB7IHJ1biB9IGZy
b20gJy4uL2V4cHJlc3Npb24uanMnOworCitpbXBvcnQgeyBiaW5hcnkgfSBmcm9tICcuL2JpbmFy
eS5qcyc7CisKK2V4cG9ydCBjb25zdCBnID0gbWFrZVRlc3RHcm91cChHUFVUZXN0KTsKKworLyoq
CisgKiBAcmV0dXJucyBhIHRlc3QgY2FzZSBmb3IgdGhlIHByb3ZpZGVkIGxlZnQgaGFuZCAmIHJp
Z2h0IGhhbmQgdmFsdWVzIGFuZCB0cnV0aCBmdW5jdGlvbi4KKyAqIEhhbmRsZXMgcXVhbnRpemF0
aW9uIGFuZCBzdWJub3JtYWxzLgorICovCitmdW5jdGlvbiBtYWtlQ2FzZShsaHMsIHJocywgdHJ1
dGhGdW5jKSB7CisgIGNvbnN0IGYzMl9saHMgPSBmMzIobGhzKTsKKyAgY29uc3QgZjMyX3JocyA9
IGYzMihyaHMpOworICBjb25zdCBsaHNfb3B0aW9ucyA9IG5ldyBTZXQoW2YzMl9saHMsIGZsdXNo
U3Vibm9ybWFsU2NhbGFyKGYzMl9saHMpXSk7CisgIGNvbnN0IHJoc19vcHRpb25zID0gbmV3IFNl
dChbZjMyX3JocywgZmx1c2hTdWJub3JtYWxTY2FsYXIoZjMyX3JocyldKTsKKyAgY29uc3QgZXhw
ZWN0ZWQgPSBbXTsKKyAgbGhzX29wdGlvbnMuZm9yRWFjaChsID0+IHsKKyAgICByaHNfb3B0aW9u
cy5mb3JFYWNoKHIgPT4geworICAgICAgY29uc3QgcmVzdWx0ID0gYm9vbCh0cnV0aEZ1bmMobCwg
cikpOworICAgICAgaWYgKCFleHBlY3RlZC5pbmNsdWRlcyhyZXN1bHQpKSB7CisgICAgICAgIGV4
cGVjdGVkLnB1c2gocmVzdWx0KTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSk7CisKKyAgcmV0dXJu
IHsgaW5wdXQ6IFtmMzJfbGhzLCBmMzJfcmhzXSwgZXhwZWN0ZWQ6IGFueU9mKC4uLmV4cGVjdGVk
KSB9OworfQorCitnLnRlc3QoJ2VxdWFscycpCisgIC51bmlxdWVJZCgneHh4eHh4eHh4JykKKyAg
LnNwZWNVUkwoJ2h0dHBzOi8vd3d3LnczLm9yZy9UUi9XR1NMLyNmbG9hdGluZy1wb2ludC1ldmFs
dWF0aW9uJykKKyAgLmRlc2MoCisgICAgYAorRXhwcmVzc2lvbjogeCA9PSB5CitBY2N1cmFjeTog
Q29ycmVjdCByZXN1bHQKK2AKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1CisgICAgICAuY29t
YmluZSgnc3RvcmFnZUNsYXNzJywgWyd1bmlmb3JtJywgJ3N0b3JhZ2VfcicsICdzdG9yYWdlX3J3
J10pCisgICAgICAuY29tYmluZSgndmVjdG9yaXplJywgW3VuZGVmaW5lZCwgMiwgMywgNF0pCisg
ICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHRydXRoRnVuYyA9IChsaHMsIHJocykg
PT4geworICAgICAgcmV0dXJuIGxocy52YWx1ZSA9PT0gcmhzLnZhbHVlOworICAgIH07CisKKyAg
ICBjb25zdCBjYXNlcyA9IFtdOworICAgIGNvbnN0IG51bWVyaWNfcmFuZ2UgPSBmdWxsRjMyUmFu
Z2UoKTsKKyAgICBudW1lcmljX3JhbmdlLmZvckVhY2gobGhzID0+IHsKKyAgICAgIG51bWVyaWNf
cmFuZ2UuZm9yRWFjaChyaHMgPT4geworICAgICAgICBjYXNlcy5wdXNoKG1ha2VDYXNlKGxocywg
cmhzLCB0cnV0aEZ1bmMpKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgcnVuKHQsIGJpbmFy
eSgnPT0nKSwgW1R5cGVGMzIsIFR5cGVGMzJdLCBUeXBlQm9vbCwgdC5wYXJhbXMsIGNhc2VzKTsK
KyAgfSk7CisKK2cudGVzdCgnbm90X2VxdWFscycpCisgIC51bmlxdWVJZCgneHh4eHh4eHh4JykK
KyAgLnNwZWNVUkwoJ2h0dHBzOi8vd3d3LnczLm9yZy9UUi9XR1NMLyNmbG9hdGluZy1wb2ludC1l
dmFsdWF0aW9uJykKKyAgLmRlc2MoCisgICAgYAorRXhwcmVzc2lvbjogeCAhPSB5CitBY2N1cmFj
eTogQ29ycmVjdCByZXN1bHQKK2AKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1CisgICAgICAu
Y29tYmluZSgnc3RvcmFnZUNsYXNzJywgWyd1bmlmb3JtJywgJ3N0b3JhZ2VfcicsICdzdG9yYWdl
X3J3J10pCisgICAgICAuY29tYmluZSgndmVjdG9yaXplJywgW3VuZGVmaW5lZCwgMiwgMywgNF0p
CisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHRydXRoRnVuYyA9IChsaHMsIHJo
cykgPT4geworICAgICAgcmV0dXJuIGxocy52YWx1ZSAhPT0gcmhzLnZhbHVlOworICAgIH07CisK
KyAgICBjb25zdCBjYXNlcyA9IFtdOworICAgIGNvbnN0IG51bWVyaWNfcmFuZ2UgPSBmdWxsRjMy
UmFuZ2UoKTsKKyAgICBudW1lcmljX3JhbmdlLmZvckVhY2gobGhzID0+IHsKKyAgICAgIG51bWVy
aWNfcmFuZ2UuZm9yRWFjaChyaHMgPT4geworICAgICAgICBjYXNlcy5wdXNoKG1ha2VDYXNlKGxo
cywgcmhzLCB0cnV0aEZ1bmMpKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgcnVuKHQsIGJp
bmFyeSgnIT0nKSwgW1R5cGVGMzIsIFR5cGVGMzJdLCBUeXBlQm9vbCwgdC5wYXJhbXMsIGNhc2Vz
KTsKKyAgfSk7CisKK2cudGVzdCgnbGVzc190aGFuJykKKyAgLnVuaXF1ZUlkKCd4eHh4eHh4eHgn
KQorICAuc3BlY1VSTCgnaHR0cHM6Ly93d3cudzMub3JnL1RSL1dHU0wvI2Zsb2F0aW5nLXBvaW50
LWV2YWx1YXRpb24nKQorICAuZGVzYygKKyAgICBgCitFeHByZXNzaW9uOiB4IDwgeQorQWNjdXJh
Y3k6IENvcnJlY3QgcmVzdWx0CitgCisgICkKKyAgLnBhcmFtcyh1ID0+CisgICAgdQorICAgICAg
LmNvbWJpbmUoJ3N0b3JhZ2VDbGFzcycsIFsndW5pZm9ybScsICdzdG9yYWdlX3InLCAnc3RvcmFn
ZV9ydyddKQorICAgICAgLmNvbWJpbmUoJ3ZlY3Rvcml6ZScsIFt1bmRlZmluZWQsIDIsIDMsIDRd
KQorICApCisgIC5mbihhc3luYyB0ID0+IHsKKyAgICBjb25zdCB0cnV0aEZ1bmMgPSAobGhzLCBy
aHMpID0+IHsKKyAgICAgIHJldHVybiBsaHMudmFsdWUgPCByaHMudmFsdWU7CisgICAgfTsKKwor
ICAgIGNvbnN0IGNhc2VzID0gW107CisgICAgY29uc3QgbnVtZXJpY19yYW5nZSA9IGZ1bGxGMzJS
YW5nZSgpOworICAgIG51bWVyaWNfcmFuZ2UuZm9yRWFjaChsaHMgPT4geworICAgICAgbnVtZXJp
Y19yYW5nZS5mb3JFYWNoKHJocyA9PiB7CisgICAgICAgIGNhc2VzLnB1c2gobWFrZUNhc2UobGhz
LCByaHMsIHRydXRoRnVuYykpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBydW4odCwgYmlu
YXJ5KCc8JyksIFtUeXBlRjMyLCBUeXBlRjMyXSwgVHlwZUJvb2wsIHQucGFyYW1zLCBjYXNlcyk7
CisgIH0pOworCitnLnRlc3QoJ2xlc3NfZXF1YWxzJykKKyAgLnVuaXF1ZUlkKCd4eHh4eHh4eHgn
KQorICAuc3BlY1VSTCgnaHR0cHM6Ly93d3cudzMub3JnL1RSL1dHU0wvI2Zsb2F0aW5nLXBvaW50
LWV2YWx1YXRpb24nKQorICAuZGVzYygKKyAgICBgCitFeHByZXNzaW9uOiB4IDw9IHkKK0FjY3Vy
YWN5OiBDb3JyZWN0IHJlc3VsdAorYAorICApCisgIC5wYXJhbXModSA9PgorICAgIHUKKyAgICAg
IC5jb21iaW5lKCdzdG9yYWdlQ2xhc3MnLCBbJ3VuaWZvcm0nLCAnc3RvcmFnZV9yJywgJ3N0b3Jh
Z2VfcncnXSkKKyAgICAgIC5jb21iaW5lKCd2ZWN0b3JpemUnLCBbdW5kZWZpbmVkLCAyLCAzLCA0
XSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdHJ1dGhGdW5jID0gKGxocywg
cmhzKSA9PiB7CisgICAgICByZXR1cm4gbGhzLnZhbHVlIDw9IHJocy52YWx1ZTsKKyAgICB9Owor
CisgICAgY29uc3QgY2FzZXMgPSBbXTsKKyAgICBjb25zdCBudW1lcmljX3JhbmdlID0gZnVsbEYz
MlJhbmdlKCk7CisgICAgbnVtZXJpY19yYW5nZS5mb3JFYWNoKGxocyA9PiB7CisgICAgICBudW1l
cmljX3JhbmdlLmZvckVhY2gocmhzID0+IHsKKyAgICAgICAgY2FzZXMucHVzaChtYWtlQ2FzZShs
aHMsIHJocywgdHJ1dGhGdW5jKSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIHJ1bih0LCBi
aW5hcnkoJzw9JyksIFtUeXBlRjMyLCBUeXBlRjMyXSwgVHlwZUJvb2wsIHQucGFyYW1zLCBjYXNl
cyk7CisgIH0pOworCitnLnRlc3QoJ2dyZWF0ZXJfdGhhbicpCisgIC51bmlxdWVJZCgneHh4eHh4
eHh4JykKKyAgLnNwZWNVUkwoJ2h0dHBzOi8vd3d3LnczLm9yZy9UUi9XR1NMLyNmbG9hdGluZy1w
b2ludC1ldmFsdWF0aW9uJykKKyAgLmRlc2MoCisgICAgYAorRXhwcmVzc2lvbjogeCA+IHkKK0Fj
Y3VyYWN5OiBDb3JyZWN0IHJlc3VsdAorYAorICApCisgIC5wYXJhbXModSA9PgorICAgIHUKKyAg
ICAgIC5jb21iaW5lKCdzdG9yYWdlQ2xhc3MnLCBbJ3VuaWZvcm0nLCAnc3RvcmFnZV9yJywgJ3N0
b3JhZ2VfcncnXSkKKyAgICAgIC5jb21iaW5lKCd2ZWN0b3JpemUnLCBbdW5kZWZpbmVkLCAyLCAz
LCA0XSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29uc3QgdHJ1dGhGdW5jID0gKGxo
cywgcmhzKSA9PiB7CisgICAgICByZXR1cm4gbGhzLnZhbHVlID4gcmhzLnZhbHVlOworICAgIH07
CisKKyAgICBjb25zdCBjYXNlcyA9IFtdOworICAgIGNvbnN0IG51bWVyaWNfcmFuZ2UgPSBmdWxs
RjMyUmFuZ2UoKTsKKyAgICBudW1lcmljX3JhbmdlLmZvckVhY2gobGhzID0+IHsKKyAgICAgIG51
bWVyaWNfcmFuZ2UuZm9yRWFjaChyaHMgPT4geworICAgICAgICBjYXNlcy5wdXNoKG1ha2VDYXNl
KGxocywgcmhzLCB0cnV0aEZ1bmMpKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgcnVuKHQs
IGJpbmFyeSgnPicpLCBbVHlwZUYzMiwgVHlwZUYzMl0sIFR5cGVCb29sLCB0LnBhcmFtcywgY2Fz
ZXMpOworICB9KTsKKworZy50ZXN0KCdncmVhdGVyX2VxdWFscycpCisgIC51bmlxdWVJZCgneHh4
eHh4eHh4JykKKyAgLnNwZWNVUkwoJ2h0dHBzOi8vd3d3LnczLm9yZy9UUi9XR1NMLyNmbG9hdGlu
Zy1wb2ludC1ldmFsdWF0aW9uJykKKyAgLmRlc2MoCisgICAgYAorRXhwcmVzc2lvbjogeCA+PSB5
CitBY2N1cmFjeTogQ29ycmVjdCByZXN1bHQKK2AKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1
CisgICAgICAuY29tYmluZSgnc3RvcmFnZUNsYXNzJywgWyd1bmlmb3JtJywgJ3N0b3JhZ2Vfcics
ICdzdG9yYWdlX3J3J10pCisgICAgICAuY29tYmluZSgndmVjdG9yaXplJywgW3VuZGVmaW5lZCwg
MiwgMywgNF0pCisgICkKKyAgLmZuKGFzeW5jIHQgPT4geworICAgIGNvbnN0IHRydXRoRnVuYyA9
IChsaHMsIHJocykgPT4geworICAgICAgcmV0dXJuIGxocy52YWx1ZSA+PSByaHMudmFsdWU7Cisg
ICAgfTsKKworICAgIGNvbnN0IGNhc2VzID0gW107CisgICAgY29uc3QgbnVtZXJpY19yYW5nZSA9
IGZ1bGxGMzJSYW5nZSgpOworICAgIG51bWVyaWNfcmFuZ2UuZm9yRWFjaChsaHMgPT4geworICAg
ICAgbnVtZXJpY19yYW5nZS5mb3JFYWNoKHJocyA9PiB7CisgICAgICAgIGNhc2VzLnB1c2gobWFr
ZUNhc2UobGhzLCByaHMsIHRydXRoRnVuYykpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBy
dW4odCwgYmluYXJ5KCc+PScpLCBbVHlwZUYzMiwgVHlwZUYzMl0sIFR5cGVCb29sLCB0LnBhcmFt
cywgY2FzZXMpOworICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2F0YW4u
c3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhl
Y3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2F0YW4uc3BlYy5qcwppbmRleCAyZTkzMmY4
NzBjNzUuLmM5Yzk5NTIxZjYyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9jYWxsL2J1aWx0aW4vYXRh
bi5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFk
ZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2F0YW4uc3BlYy5qcwpAQCAtNiw5
ICs2LDkgQEAgRXhlY3V0aW9uIFRlc3RzIGZvciB0aGUgJ2F0YW4nIGJ1aWx0aW4gZnVuY3Rpb24K
IGltcG9ydCB7IG1ha2VUZXN0R3JvdXAgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb21tb24v
ZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnOwogaW1wb3J0IHsgR1BVVGVzdCB9IGZyb20gJy4uLy4u
Ly4uLy4uLy4uL2dwdV90ZXN0LmpzJzsKIGltcG9ydCB7IHVscFRocmVzaG9sZCB9IGZyb20gJy4u
Ly4uLy4uLy4uLy4uL3V0aWwvY29tcGFyZS5qcyc7Ci1pbXBvcnQgeyBrQml0LCBrVmFsdWUgfSBm
cm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2NvbnN0YW50cy5qcyc7CitpbXBvcnQgeyBrQml0IH0g
ZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9jb25zdGFudHMuanMnOwogaW1wb3J0IHsgZjMyLCBm
MzJCaXRzLCBUeXBlRjMyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9jb252ZXJzaW9uLmpz
JzsKLWltcG9ydCB7IGJpYXNlZFJhbmdlLCBsaW5lYXJSYW5nZSB9IGZyb20gJy4uLy4uLy4uLy4u
Ly4uL3V0aWwvbWF0aC5qcyc7CitpbXBvcnQgeyBmdWxsRjMyUmFuZ2UgfSBmcm9tICcuLi8uLi8u
Li8uLi8uLi91dGlsL21hdGguanMnOwogaW1wb3J0IHsgcnVuIH0gZnJvbSAnLi4vLi4vZXhwcmVz
c2lvbi5qcyc7CiAKIGltcG9ydCB7IGJ1aWx0aW4gfSBmcm9tICcuL2J1aWx0aW4uanMnOwpAQCAt
MzgsNyArMzgsNyBAQCBUT0RPKCM3OTIpOiBEZWNpZGUgd2hhdCB0aGUgZ3JvdW5kLXRydXRoIGlz
IGZvciB0aGVzZSB0ZXN0cy4gWzFdCiAgICAgfTsKIAogICAgIC8vIFdlbGwgZGVmaW5lZC9ib3Jk
ZXIgY2FzZXMKLSAgICBsZXQgY2FzZXMgPSBbCisgICAgY29uc3QgY2FzZXMgPSBbCiAgICAgICB7
IGlucHV0OiBmMzJCaXRzKGtCaXQuZjMyLmluZmluaXR5Lm5lZ2F0aXZlKSwgZXhwZWN0ZWQ6IGYz
MigtTWF0aC5QSSAvIDIpIH0sCiAgICAgICB7IGlucHV0OiBmMzIoLU1hdGguc3FydCgzKSksIGV4
cGVjdGVkOiBmMzIoLU1hdGguUEkgLyAzKSB9LAogICAgICAgeyBpbnB1dDogZjMyKC0xKSwgZXhw
ZWN0ZWQ6IGYzMigtTWF0aC5QSSAvIDQpIH0sCkBAIC02MiwxNyArNjIsMTEgQEAgVE9ETygjNzky
KTogRGVjaWRlIHdoYXQgdGhlIGdyb3VuZC10cnV0aCBpcyBmb3IgdGhlc2UgdGVzdHMuIFsxXQog
ICAgICAgeyBpbnB1dDogZjMyQml0cyhrQml0LmYzMi5uZWdhdGl2ZS56ZXJvKSwgZXhwZWN0ZWQ6
IGYzMkJpdHMoa0JpdC5mMzIubmVnYXRpdmUuemVybykgfSwKICAgICAgIHsgaW5wdXQ6IGYzMkJp
dHMoa0JpdC5mMzIucG9zaXRpdmUuemVybyksIGV4cGVjdGVkOiBmMzJCaXRzKGtCaXQuZjMyLm5l
Z2F0aXZlLnplcm8pIH0sCiAgICAgICB7IGlucHV0OiBmMzJCaXRzKGtCaXQuZjMyLm5lZ2F0aXZl
Lnplcm8pLCBleHBlY3RlZDogZjMyQml0cyhrQml0LmYzMi5wb3NpdGl2ZS56ZXJvKSB9LAorICAg
ICAgLi4uZnVsbEYzMlJhbmdlKHsgbmVnX25vcm06IDEwMDAsIG5lZ19zdWI6IDEwMCwgcG9zX3N1
YjogMTAwLCBwb3Nfbm9ybTogMTAwMCB9KS5tYXAoeCA9PgorICAgICAgICBtYWtlQ2FzZSh4KQor
ICAgICAgKSwKICAgICBdOwogCi0gICAgLy8gIC0yXjMyIDwgeCA8PSAtMSwgYmlhc2VkIHRvd2Fy
ZHMgLTEKLSAgICBjYXNlcyA9IGNhc2VzLmNvbmNhdChiaWFzZWRSYW5nZSgtMSwgLSgyICoqIDMy
KSwgMTAwMCkubWFwKHggPT4gbWFrZUNhc2UoeCkpKTsKLSAgICAvLyAtMSA8PSB4IDwgMCwgbGlu
ZWFybHkgc3ByZWFkCi0gICAgY2FzZXMgPSBjYXNlcy5jb25jYXQobGluZWFyUmFuZ2UoLTEsIGtW
YWx1ZS5mMzIubmVnYXRpdmUubWF4LCAxMDApLm1hcCh4ID0+IG1ha2VDYXNlKHgpKSk7Ci0gICAg
Ly8gMCA8IHggPD0gMSwgbGluZWFybHkgc3ByZWFkCi0gICAgY2FzZXMgPSBjYXNlcy5jb25jYXQo
bGluZWFyUmFuZ2Uoa1ZhbHVlLmYzMi5wb3NpdGl2ZS5taW4sIDEsIDEwMCkubWFwKHggPT4gbWFr
ZUNhc2UoeCkpKTsKLSAgICAvLyAxIDw9IHggPCAyXjMyLCBiaWFzZWQgdG93YXJkcyAxCi0gICAg
Y2FzZXMgPSBjYXNlcy5jb25jYXQoYmlhc2VkUmFuZ2UoMSwgMiAqKiAzMiwgMTAwMCkubWFwKHgg
PT4gbWFrZUNhc2UoeCkpKTsKLQogICAgIGNvbnN0IGNmZyA9IHQucGFyYW1zOwogICAgIGNmZy5j
bXBGbG9hdHMgPSB1bHBUaHJlc2hvbGQoNDA5Nik7CiAgICAgcnVuKHQsIGJ1aWx0aW4oJ2F0YW4n
KSwgW1R5cGVGMzJdLCBUeXBlRjMyLCBjZmcsIGNhc2VzKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24v
Y2FsbC9idWlsdGluL2F0YW4yLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9hdGFuMi5z
cGVjLmpzCmluZGV4IDQ2MTA2M2QzMjdmYS4uMGYwMmI2OTJlYWFiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNz
aW9uL2NhbGwvYnVpbHRpbi9hdGFuMi5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGlu
L2F0YW4yLnNwZWMuanMKQEAgLTcsOSArNyw4IEBAIGltcG9ydCB7IG1ha2VUZXN0R3JvdXAgfSBm
cm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb21tb24vZnJhbWV3b3JrL3Rlc3RfZ3JvdXAuanMnCiBp
bXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb21tb24vdXRpbC91dGls
LmpzJzsKIGltcG9ydCB7IEdQVVRlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ncHVfdGVzdC5q
cyc7CiBpbXBvcnQgeyB1bHBUaHJlc2hvbGQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2Nv
bXBhcmUuanMnOwotaW1wb3J0IHsga1ZhbHVlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9j
b25zdGFudHMuanMnOwogaW1wb3J0IHsgZjMyLCBUeXBlRjMyIH0gZnJvbSAnLi4vLi4vLi4vLi4v
Li4vdXRpbC9jb252ZXJzaW9uLmpzJzsKLWltcG9ydCB7IGJpYXNlZFJhbmdlLCBsaW5lYXJSYW5n
ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvbWF0aC5qcyc7CitpbXBvcnQgeyBmdWxsRjMy
UmFuZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL21hdGguanMnOwogaW1wb3J0IHsgcnVu
IH0gZnJvbSAnLi4vLi4vZXhwcmVzc2lvbi5qcyc7CiAKIGltcG9ydCB7IGJ1aWx0aW4gfSBmcm9t
ICcuL2J1aWx0aW4uanMnOwpAQCAtMzksMjIgKzM4LDIwIEBAIFRPRE8oIzc5Mik6IERlY2lkZSB3
aGF0IHRoZSBncm91bmQtdHJ1dGggaXMgZm9yIHRoZXNlIHRlc3RzLiBbMV0KICAgICAgIHJldHVy
biB7IGlucHV0OiBbZjMyKHkpLCBmMzIoeCldLCBleHBlY3RlZDogZjMyKE1hdGguYXRhbjIoeSwg
eCkpIH07CiAgICAgfTsKIAotICAgIGxldCBudW1lcmljX3JhbmdlID0gW107Ci0gICAgLy8gIC0y
XjMyIDwgeCA8PSAtMSwgYmlhc2VkIHRvd2FyZHMgLTEKLSAgICBudW1lcmljX3JhbmdlID0gbnVt
ZXJpY19yYW5nZS5jb25jYXQoYmlhc2VkUmFuZ2UoLTEuMCwgLSgyICoqIDMyKSwgNTApKTsKLSAg
ICAvLyAtMSA8PSB4IDwgMCwgbGluZWFybHkgc3ByZWFkCi0gICAgbnVtZXJpY19yYW5nZSA9IG51
bWVyaWNfcmFuZ2UuY29uY2F0KGxpbmVhclJhbmdlKC0xLjAsIGtWYWx1ZS5mMzIubmVnYXRpdmUu
bWF4LCAyMCkpOwotICAgIC8vIDAgPCB4IDwgLTEsIGxpbmVhcmx5IHNwcmVhZAotICAgIG51bWVy
aWNfcmFuZ2UgPSBudW1lcmljX3JhbmdlLmNvbmNhdChsaW5lYXJSYW5nZShrVmFsdWUuZjMyLnBv
c2l0aXZlLm1pbiwgMS4wLCAyMCkpOwotICAgIC8vIDEgPD0geCA8IDJeMzIsIGJpYXNlZCB0b3dh
cmRzIDEKLSAgICBudW1lcmljX3JhbmdlID0gbnVtZXJpY19yYW5nZS5jb25jYXQoYmlhc2VkUmFu
Z2UoMS4wLCAyICoqIDMyLCAyMCkpOworICAgIGNvbnN0IG51bWVyaWNfcmFuZ2UgPSBmdWxsRjMy
UmFuZ2UoeworICAgICAgbmVnX25vcm06IDEwMDAsCisgICAgICBuZWdfc3ViOiAxMDAsCisgICAg
ICBwb3Nfc3ViOiAxMDAsCisgICAgICBwb3Nfbm9ybTogMTAwMCwKKyAgICB9KS5maWx0ZXIoeCA9
PiB7CisgICAgICByZXR1cm4geCAhPT0gMDsKKyAgICB9KTsKIAotICAgIGxldCBjYXNlcyA9IFtd
OwotICAgIGNhc2VzID0gY2FzZXMuY29uY2F0KG51bWVyaWNfcmFuZ2UubWFwKHggPT4gbWFrZUNh
c2UoMC4wLCB4KSkpOworICAgIGNvbnN0IGNhc2VzID0gbnVtZXJpY19yYW5nZS5tYXAoeCA9PiBt
YWtlQ2FzZSgwLjAsIHgpKTsKICAgICBudW1lcmljX3JhbmdlLmZvckVhY2goKHksIHlfaWR4KSA9
PiB7CiAgICAgICBudW1lcmljX3JhbmdlLmZvckVhY2goKHgsIHhfaWR4KSA9PiB7CiAgICAgICAg
IGlmICh4X2lkeCA+PSB5X2lkeCkgewotICAgICAgICAgIGNhc2VzID0gY2FzZXMuY29uY2F0KG1h
a2VDYXNlKHksIHgpKTsKKyAgICAgICAgICBjYXNlcy5wdXNoKG1ha2VDYXNlKHksIHgpKTsKICAg
ICAgICAgfQogICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVp
bHRpbi9jbGFtcC5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9jYWxsL2J1aWx0aW4vY2xhbXAuc3BlYy5qcwpp
bmRleCBlMzNlNmM0ODY4YzEuLjcxNmFiNGRjMDgwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9jYWxs
L2J1aWx0aW4vY2xhbXAuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9jbGFtcC5z
cGVjLmpzCkBAIC0yNSwyOCArMjUsODEgQEAgaW1wb3J0IHsgYnVpbHRpbiB9IGZyb20gJy4vYnVp
bHRpbi5qcyc7CiAKIGV4cG9ydCBjb25zdCBnID0gbWFrZVRlc3RHcm91cChHUFVUZXN0KTsKIAot
LyoqIEdlbmVyYXRlIHNldCBvZiBjbGFtcCB0ZXN0IGNhc2VzIGZyb20gYW4gYXNjZW5kaW5nIGxp
c3Qgb2YgdmFsdWVzICovCi1mdW5jdGlvbiBnZW5lcmF0ZVRlc3RDYXNlcyh0ZXN0X3ZhbHVlcykg
eworLyoqCisgKiBDYWxjdWxhdGVzIGNsYW1wIHVzaW5nIHRoZSBtaW4tbWF4IGZvcm11bGEuCisg
KiBjbGFtcChlLCBmLCBnKSA9IG1pbihtYXgoZSwgZiksIGcpCisgKgorICogT3BlcmF0ZXMgb24g
aW5kaWNlcyBvZiBhbiBhc2NlbmRpbmcgc29ydGVkIGFycmF5LCBpbnN0ZWFkIG9mIHRoZSBhY3R1
YWwKKyAqIHZhbHVlcyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMuCisgKgorICogQHJldHVybnMg
dGhlIGluZGV4IG9mIHRoZSBjbGFtcGVkIHZhbHVlCisgKi8KK2Z1bmN0aW9uIGNhbGN1bGF0ZU1p
bk1heENsYW1wKGVpLCBmaSwgZ2kpIHsKKyAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGVpLCBm
aSksIGdpKTsKK30KKworLyoqCisgKiBDYWxjdWxhdGVzIGNsYW1wIGFzIHRoZSBtZWRpYW4gb2Yg
dGhyZWUgbnVtYmVycworICoKKyAqIE9wZXJhdGVzIG9uIGluZGljZXMgb2YgYW4gYXNjZW5kaW5n
IHNvcnRlZCBhcnJheSwgaW5zdGVhZCBvZiB0aGUgYWN0dWFsCisgKiB2YWx1ZXMgdG8gYXZvaWQg
cm91bmRpbmcgaXNzdWVzLgorICoKKyAqIEByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgY2xhbXBl
ZCB2YWx1ZQorICovCitmdW5jdGlvbiBjYWxjdWxhdGVNZWRpYW5DbGFtcChlaSwgZmksIGdpKSB7
CisgIHJldHVybiBbZWksIGZpLCBnaV0uc29ydCgoYSwgYikgPT4geworICAgIHJldHVybiBhIC0g
YjsKKyAgfSlbMV07Cit9CisKKy8qKiBAcmV0dXJucyBhIHNldCBvZiBjbGFtcCB0ZXN0IGNhc2Vz
IGZyb20gYW4gYXNjZW5kaW5nIGxpc3Qgb2YgaW50ZWdlciB2YWx1ZXMgKi8KK2Z1bmN0aW9uIGdl
bmVyYXRlSW50ZWdlclRlc3RDYXNlcyh0ZXN0X3ZhbHVlcykgewogICBjb25zdCBjYXNlcyA9IG5l
dyBBcnJheSgpOwogICB0ZXN0X3ZhbHVlcy5mb3JFYWNoKChlLCBlaSkgPT4gewogICAgIHRlc3Rf
dmFsdWVzLmZvckVhY2goKGYsIGZpKSA9PiB7CiAgICAgICB0ZXN0X3ZhbHVlcy5mb3JFYWNoKChn
LCBnaSkgPT4gewotICAgICAgICAvLyBUaGlzIGlzIGVuZm9yY2luZyB0aGF0IGxvdyA8PSBoaWdo
LCBzaW5jZSBtb3N0IGJhY2tlbmRzIGxhbmd1YWdlcwotICAgICAgICAvLyBoYXZlIHVuZGVmaW5l
ZCBiZWhhdmlvdXIgZm9yIGhpZ2ggPCBsb3csIHNvIGltcGxlbWVudGF0aW9ucyB3b3VsZAotICAg
ICAgICAvLyBuZWVkIHRvIHBvbHlmaWxsLCBhbmQgaXQgaXMgdW5jbGVhciBpZiB0aGlzIHdhcyBp
bnRlbmRlZC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dwdXdl
Yi9ncHV3ZWIvaXNzdWVzLzI1NTcgZGlzY3Vzc2VzIGNoYW5naW5nIHRoZQotICAgICAgICAvLyBz
cGVjIHRvIGV4cGxpY2l0bHkgcmVxdWlyZSBsb3cgPD0gaGlnaC4KLSAgICAgICAgaWYgKGZpIDw9
IGdpKSB7Ci0gICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBub3QgdXNpbmcgY2xhbXAgZnJvbSBt
YXRoLnRzIG9yIG90aGVyIFR5cGVTY3JpcHQKLSAgICAgICAgICAvLyBkZWZpbmVkIGNsYW1wIHRv
IGF2b2lkIHJvdW5kaW5nIGlzc3VlcyBmcm9tIGdvaW5nIGluL291dCBvZgotICAgICAgICAgIC8v
IGBudW1iZXJgIHR5cGUuCi0gICAgICAgICAgY29uc3QgcHJlY2lzZV9leHBlY3RlZCA9IGVpIDw9
IGZpID8gZiA6IGVpIDw9IGdpID8gZSA6IGc7Ci0gICAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBp
c1N1Ym5vcm1hbFNjYWxhcihwcmVjaXNlX2V4cGVjdGVkKQotICAgICAgICAgICAgPyBhbnlPZihw
cmVjaXNlX2V4cGVjdGVkLCBmMzIoMC4wKSkKLSAgICAgICAgICAgIDogcHJlY2lzZV9leHBlY3Rl
ZDsKLSAgICAgICAgICBjYXNlcy5wdXNoKHsgaW5wdXQ6IFtlLCBmLCBnXSwgZXhwZWN0ZWQgfSk7
CisgICAgICAgIGNvbnN0IGV4cGVjdGVkX2lkeCA9IGNhbGN1bGF0ZU1pbk1heENsYW1wKGVpLCBm
aSwgZ2kpOworICAgICAgICBjb25zdCBwcmVjaXNlX2V4cGVjdGVkID0gdGVzdF92YWx1ZXNbZXhw
ZWN0ZWRfaWR4XTsKKyAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBpc1N1Ym5vcm1hbFNjYWxhcihw
cmVjaXNlX2V4cGVjdGVkKQorICAgICAgICAgID8gYW55T2YocHJlY2lzZV9leHBlY3RlZCwgZjMy
KDAuMCkpCisgICAgICAgICAgOiBwcmVjaXNlX2V4cGVjdGVkOworICAgICAgICBjYXNlcy5wdXNo
KHsgaW5wdXQ6IFtlLCBmLCBnXSwgZXhwZWN0ZWQgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAg
fSk7CisgIHJldHVybiBjYXNlczsKK30KKworLyoqIEByZXR1cm5zIGEgc2V0IG9mIGNsYW1wIHRl
c3QgY2FzZXMgZnJvbSBhbiBhc2NlbmRpbmcgbGlzdCBvZiBmbG9hdGluZyBwb2ludCB2YWx1ZXMg
Ki8KK2Z1bmN0aW9uIGdlbmVyYXRlRmxvYXRUZXN0Q2FzZXModGVzdF92YWx1ZXMpIHsKKyAgY29u
c3QgY2FzZXMgPSBuZXcgQXJyYXkoKTsKKyAgdGVzdF92YWx1ZXMuZm9yRWFjaCgoZSwgZWkpID0+
IHsKKyAgICB0ZXN0X3ZhbHVlcy5mb3JFYWNoKChmLCBmaSkgPT4geworICAgICAgdGVzdF92YWx1
ZXMuZm9yRWFjaCgoZywgZ2kpID0+IHsKKyAgICAgICAgLy8gU3BlYyBhbGxvd3MgYmFja2VuZHMg
Zm9yIGZsb2F0cyB0byBlaXRoZXIgcmV0dXJuIHRoZSBtaW4tbWF4IGZvcm11bGEgb3IgbWVkaWFu
IG9mIDMgbnVtYmVycworICAgICAgICBjb25zdCBleHBlY3RlZF92YWx1ZXMgPSBbXTsKKyAgICAg
ICAgeworICAgICAgICAgIGNvbnN0IGV4cGVjdGVkX2lkeCA9IGNhbGN1bGF0ZU1pbk1heENsYW1w
KGVpLCBmaSwgZ2kpOworICAgICAgICAgIGNvbnN0IHByZWNpc2VfZXhwZWN0ZWQgPSB0ZXN0X3Zh
bHVlc1tleHBlY3RlZF9pZHhdOworICAgICAgICAgIGlmICghZXhwZWN0ZWRfdmFsdWVzLmluY2x1
ZGVzKHByZWNpc2VfZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBleHBlY3RlZF92YWx1ZXMucHVz
aChwcmVjaXNlX2V4cGVjdGVkKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgewor
ICAgICAgICAgIGNvbnN0IGV4cGVjdGVkX2lkeCA9IGNhbGN1bGF0ZU1lZGlhbkNsYW1wKGVpLCBm
aSwgZ2kpOworICAgICAgICAgIGNvbnN0IHByZWNpc2VfZXhwZWN0ZWQgPSB0ZXN0X3ZhbHVlc1tl
eHBlY3RlZF9pZHhdOworICAgICAgICAgIGlmICghZXhwZWN0ZWRfdmFsdWVzLmluY2x1ZGVzKHBy
ZWNpc2VfZXhwZWN0ZWQpKSB7CisgICAgICAgICAgICBleHBlY3RlZF92YWx1ZXMucHVzaChwcmVj
aXNlX2V4cGVjdGVkKTsKKyAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgY29uc3QgY29u
dGFpbnNfc3Vibm9ybWFscyA9CisgICAgICAgICAgZXhwZWN0ZWRfdmFsdWVzLmZpbHRlcih4ID0+
IHsKKyAgICAgICAgICAgIHJldHVybiBpc1N1Ym5vcm1hbFNjYWxhcih4KTsKKyAgICAgICAgICB9
KS5sZW5ndGggPiAwOworICAgICAgICBpZiAoY29udGFpbnNfc3Vibm9ybWFscykgeworICAgICAg
ICAgIGV4cGVjdGVkX3ZhbHVlcy5wdXNoKGYzMigwLjApKTsKKyAgICAgICAgfQorICAgICAgICBj
YXNlcy5wdXNoKHsgaW5wdXQ6IFtlLCBmLCBnXSwgZXhwZWN0ZWQ6IGFueU9mKC4uLmV4cGVjdGVk
X3ZhbHVlcykgfSk7CiAgICAgICB9KTsKICAgICB9KTsKICAgfSk7CkBAIC03MSw5ICsxMjQsNiBA
QCBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cy9ibG9iL21haW4vZG9jcy9wbGFuX2F1dG9n
ZW4ubWQKICAgICAgIC5jb21iaW5lKCd2ZWN0b3JpemUnLCBbdW5kZWZpbmVkLCAyLCAzLCA0XSkK
ICAgKQogICAuZm4oYXN5bmMgdCA9PiB7Ci0gICAgY29uc3QgY2ZnID0gdC5wYXJhbXM7Ci0gICAg
Y2ZnLmNtcEZsb2F0cyA9IGNvcnJlY3RseVJvdW5kZWRUaHJlc2hvbGQoKTsKLQogICAgIC8vIFRo
aXMgYXJyYXkgbXVzdCBiZSBzdHJpY3RseSBpbmNyZWFzaW5nLCBzaW5jZSB0aGF0IG9yZGVyaW5n
IGRldGVybWluZXMKICAgICAvLyB0aGUgZXhwZWN0ZWQgdmFsdWVzLgogICAgIGNvbnN0IHRlc3Rf
dmFsdWVzID0gWwpAQCAtOTAsOCArMTQwLDggQEAgaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9j
dHMvYmxvYi9tYWluL2RvY3MvcGxhbl9hdXRvZ2VuLm1kCiAgICAgICBidWlsdGluKCdjbGFtcCcp
LAogICAgICAgW1R5cGVVMzIsIFR5cGVVMzIsIFR5cGVVMzJdLAogICAgICAgVHlwZVUzMiwKLSAg
ICAgIGNmZywKLSAgICAgIGdlbmVyYXRlVGVzdENhc2VzKHRlc3RfdmFsdWVzKQorICAgICAgdC5w
YXJhbXMsCisgICAgICBnZW5lcmF0ZUludGVnZXJUZXN0Q2FzZXModGVzdF92YWx1ZXMpCiAgICAg
KTsKICAgfSk7CiAKQEAgLTExMyw5ICsxNjMsNiBAQCBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2Vi
L2N0cy9ibG9iL21haW4vZG9jcy9wbGFuX2F1dG9nZW4ubWQKICAgICAgIC5jb21iaW5lKCd2ZWN0
b3JpemUnLCBbdW5kZWZpbmVkLCAyLCAzLCA0XSkKICAgKQogICAuZm4oYXN5bmMgdCA9PiB7Ci0g
ICAgY29uc3QgY2ZnID0gdC5wYXJhbXM7Ci0gICAgY2ZnLmNtcEZsb2F0cyA9IGNvcnJlY3RseVJv
dW5kZWRUaHJlc2hvbGQoKTsKLQogICAgIC8vIFRoaXMgYXJyYXkgbXVzdCBiZSBzdHJpY3RseSBp
bmNyZWFzaW5nLCBzaW5jZSB0aGF0IG9yZGVyaW5nIGRldGVybWluZXMKICAgICAvLyB0aGUgZXhw
ZWN0ZWQgdmFsdWVzLgogICAgIGNvbnN0IHRlc3RfdmFsdWVzID0gWwpAQCAtMTM0LDggKzE4MSw4
IEBAIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvY3RzL2Jsb2IvbWFpbi9kb2NzL3BsYW5fYXV0
b2dlbi5tZAogICAgICAgYnVpbHRpbignY2xhbXAnKSwKICAgICAgIFtUeXBlSTMyLCBUeXBlSTMy
LCBUeXBlSTMyXSwKICAgICAgIFR5cGVJMzIsCi0gICAgICBjZmcsCi0gICAgICBnZW5lcmF0ZVRl
c3RDYXNlcyh0ZXN0X3ZhbHVlcykKKyAgICAgIHQucGFyYW1zLAorICAgICAgZ2VuZXJhdGVJbnRl
Z2VyVGVzdENhc2VzKHRlc3RfdmFsdWVzKQogICAgICk7CiAgIH0pOwogCkBAIC0xNDUsMTAgKzE5
Miw3IEBAIGcudGVzdCgnZjMyJykKICAgLmRlc2MoCiAgICAgYAogY2xhbXA6Ci1UIGlzIGYzMiBv
ciB2ZWNOPGYzMj4gY2xhbXAoZTogVCAsIGxvdzogVCwgaGlnaDogVCkgLT4gVCBSZXR1cm5zIG1p
bihtYXgoZSwgbG93KSwgaGlnaCkuIENvbXBvbmVudC13aXNlIHdoZW4gVCBpcyBhIHZlY3Rvci4g
KEdMU0xzdGQ0NTBOQ2xhbXApCi0KLVBsZWFzZSByZWFkIHRoZSBmb2xsb3dpbmcgZ3VpZGVsaW5l
cyBiZWZvcmUgY29udHJpYnV0aW5nOgotaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9jdHMvYmxv
Yi9tYWluL2RvY3MvcGxhbl9hdXRvZ2VuLm1kCitUIGlzIGYzMiBvciB2ZWNOPGYzMj4gY2xhbXAo
ZTogVCAsIGxvdzogVCwgaGlnaDogVCkgLT4gVCBSZXR1cm5zIGVpdGhlciBtaW4obWF4KGUsbG93
KSxoaWdoKSwgb3IgdGhlIG1lZGlhbiBvZiB0aGUgdGhyZWUgdmFsdWVzIGUsIGxvdywgaGlnaC4g
Q29tcG9uZW50LXdpc2Ugd2hlbiBUIGlzIGEgdmVjdG9yLgogYAogICApCiAgIC5wYXJhbXModSA9
PgpAQCAtMTg2LDYgKzIzMCw2IEBAIGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvY3RzL2Jsb2Iv
bWFpbi9kb2NzL3BsYW5fYXV0b2dlbi5tZAogICAgICAgW1R5cGVGMzIsIFR5cGVGMzIsIFR5cGVG
MzJdLAogICAgICAgVHlwZUYzMiwKICAgICAgIGNmZywKLSAgICAgIGdlbmVyYXRlVGVzdENhc2Vz
KHRlc3RfdmFsdWVzKQorICAgICAgZ2VuZXJhdGVGbG9hdFRlc3RDYXNlcyh0ZXN0X3ZhbHVlcykK
ICAgICApOwogICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2ludmVyc2Vz
cXJ0LnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVy
L2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9pbnZlcnNlc3FydC5zcGVjLmpzCmlu
ZGV4IDEwMTgwMGM5MmUzNC4uOTAzMTI1ZGU4N2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwv
YnVpbHRpbi9pbnZlcnNlc3FydC5zcGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2lu
dmVyc2VzcXJ0LnNwZWMuanMKQEAgLTM5LDE2ICszOSwxNSBAQCBodHRwczovL2dpdGh1Yi5jb20v
Z3B1d2ViL2N0cy9ibG9iL21haW4vZG9jcy9wbGFuX2F1dG9nZW4ubWQKICAgICB9OwogCiAgICAg
Ly8gV2VsbCBkZWZpbmVkIGNhc2VzCi0gICAgbGV0IGNhc2VzID0gWworICAgIGNvbnN0IGNhc2Vz
ID0gWwogICAgICAgeyBpbnB1dDogZjMyQml0cyhrQml0LmYzMi5pbmZpbml0eS5wb3NpdGl2ZSks
IGV4cGVjdGVkOiBmMzIoMCkgfSwKICAgICAgIHsgaW5wdXQ6IGYzMigxKSwgZXhwZWN0ZWQ6IGYz
MigxKSB9LAorICAgICAgLy8gMCA8IHggPD0gMSBsaW5lYXJseSBzcHJlYWQKKyAgICAgIC4uLmxp
bmVhclJhbmdlKGtWYWx1ZS5mMzIucG9zaXRpdmUubWluLCAxLCAxMDApLm1hcCh4ID0+IG1ha2VD
YXNlKHgpKSwKKyAgICAgIC8vIDEgPD0geCA8IDJeMzIsIGJpYXNlZCB0b3dhcmRzIDEKKyAgICAg
IC4uLmJpYXNlZFJhbmdlKDEsIDIgKiogMzIsIDEwMDApLm1hcCh4ID0+IG1ha2VDYXNlKHgpKSwK
ICAgICBdOwogCi0gICAgLy8gMCA8IHggPD0gMSBsaW5lYXJseSBzcHJlYWQKLSAgICBjYXNlcyA9
IGNhc2VzLmNvbmNhdChsaW5lYXJSYW5nZShrVmFsdWUuZjMyLnBvc2l0aXZlLm1pbiwgMSwgMTAw
KS5tYXAoeCA9PiBtYWtlQ2FzZSh4KSkpOwotICAgIC8vIDEgPD0geCA8IDJeMzIsIGJpYXNlZCB0
b3dhcmRzIDEKLSAgICBjYXNlcyA9IGNhc2VzLmNvbmNhdChiaWFzZWRSYW5nZSgxLCAyICoqIDMy
LCAxMDAwKS5tYXAoeCA9PiBtYWtlQ2FzZSh4KSkpOwotCiAgICAgY29uc3QgY2ZnID0gdC5wYXJh
bXM7CiAgICAgY2ZnLmNtcEZsb2F0cyA9IHVscFRocmVzaG9sZCgyKTsKICAgICBydW4odCwgYnVp
bHRpbignaW52ZXJzZVNxcnQnKSwgW1R5cGVGMzJdLCBUeXBlRjMyLCBjZmcsIGNhc2VzKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhl
Y3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2xkZXhwLnNwZWMuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2Nh
bGwvYnVpbHRpbi9sZGV4cC5zcGVjLmpzCmluZGV4IDU3NTQ5NzFhNTQyNS4uMjZjYjQyNTBlY2Qy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVy
L2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9sZGV4cC5zcGVjLmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJl
c3Npb24vY2FsbC9idWlsdGluL2xkZXhwLnNwZWMuanMKQEAgLTQ0LDI4ICs0NCwzMCBAQCBUIGlz
IGYzMiBvciB2ZWNOPGYzMj4gSSBpcyBpMzIgb3IgdmVjTjxpMzI+LCB3aGVyZSBJIGlzIGEgc2Nh
bGFyIGlmIFQgaXMgYSBzY2FsYQogICAgICAgcmV0dXJuIHsgaW5wdXQ6IFtmMzIoZTEpLCBpMzIo
ZTIpXSwgZXhwZWN0ZWQ6IGYzMihyZXN1bHQpIH07CiAgICAgfTsKIAotICAgIGxldCBlMV9yYW5n
ZSA9IFtdOwotICAgIC8vICAtMl4zMiA8IHggPD0gLTEsIGJpYXNlZCB0b3dhcmRzIC0xCi0gICAg
ZTFfcmFuZ2UgPSBlMV9yYW5nZS5jb25jYXQoYmlhc2VkUmFuZ2UoLTEsIC0oMiAqKiAzMiksIDUw
KSk7Ci0gICAgLy8gLTEgPD0geCA8PSAwLCBsaW5lYXJseSBzcHJlYWQKLSAgICBlMV9yYW5nZSA9
IGUxX3JhbmdlLmNvbmNhdChsaW5lYXJSYW5nZSgtMSwgMCwgMjApKTsKLSAgICAvLyAwIDw9IHgg
PD0gLTEsIGxpbmVhcmx5IHNwcmVhZAotICAgIGUxX3JhbmdlID0gZTFfcmFuZ2UuY29uY2F0KGxp
bmVhclJhbmdlKDAsIDEsIDIwKSk7Ci0gICAgLy8gMSA8PSB4IDwgMl4zMiwgYmlhc2VkIHRvd2Fy
ZHMgMQotICAgIGUxX3JhbmdlID0gZTFfcmFuZ2UuY29uY2F0KGJpYXNlZFJhbmdlKDEsIDIgKiog
MzIsIDUwKSk7CisgICAgY29uc3QgZTFfcmFuZ2UgPSBbCisgICAgICAvLyAgLTJeMzIgPCB4IDw9
IC0xLCBiaWFzZWQgdG93YXJkcyAtMQorICAgICAgLi4uYmlhc2VkUmFuZ2UoLTEsIC0oMiAqKiAz
MiksIDUwKSwKKyAgICAgIC8vIC0xIDw9IHggPD0gMCwgbGluZWFybHkgc3ByZWFkCisgICAgICAu
Li5saW5lYXJSYW5nZSgtMSwgMCwgMjApLAorICAgICAgLy8gMCA8PSB4IDw9IC0xLCBsaW5lYXJs
eSBzcHJlYWQKKyAgICAgIC4uLmxpbmVhclJhbmdlKDAsIDEsIDIwKSwKKyAgICAgIC8vIDEgPD0g
eCA8IDJeMzIsIGJpYXNlZCB0b3dhcmRzIDEKKyAgICAgIC4uLmJpYXNlZFJhbmdlKDEsIDIgKiog
MzIsIDUwKSwKKyAgICBdOwogCi0gICAgbGV0IGUyX3JhbmdlID0gW107Ci0gICAgLy8gIC0xMjcg
PCB4IDw9IDAsIGJpYXNlZCB0b3dhcmRzIDAKLSAgICBlMl9yYW5nZSA9IGUyX3JhbmdlLmNvbmNh
dChiaWFzZWRSYW5nZSgwLCAtMTI3LCAyMCkubWFwKHggPT4gTWF0aC5yb3VuZCh4KSkpOwotICAg
IC8vICAwIDw9IHggPCAxMjgsIGJpYXNlZCB0b3dhcmRzIDAKLSAgICBlMl9yYW5nZSA9IGUyX3Jh
bmdlLmNvbmNhdChiaWFzZWRSYW5nZSgwLCAxMjgsIDIwKS5tYXAoeCA9PiBNYXRoLnJvdW5kKHgp
KSk7CisgICAgY29uc3QgZTJfcmFuZ2UgPSBbCisgICAgICAvLyAtMTI3IDwgeCA8PSAwLCBiaWFz
ZWQgdG93YXJkcyAwCisgICAgICAuLi5iaWFzZWRSYW5nZSgwLCAtMTI3LCAyMCkubWFwKHggPT4g
TWF0aC5yb3VuZCh4KSksCisgICAgICAvLyAwIDw9IHggPCAxMjgsIGJpYXNlZCB0b3dhcmRzIDAK
KyAgICAgIC4uLmJpYXNlZFJhbmdlKDAsIDEyOCwgMjApLm1hcCh4ID0+IE1hdGgucm91bmQoeCkp
LAorICAgIF07CiAKLSAgICBsZXQgY2FzZXMgPSBbXTsKKyAgICBjb25zdCBjYXNlcyA9IFtdOwog
ICAgIGUxX3JhbmdlLmZvckVhY2goZTEgPT4gewogICAgICAgZTJfcmFuZ2UuZm9yRWFjaChlMiA9
PiB7CiAgICAgICAgIGNvbnN0IGMgPSB0cnV0aEZ1bmMoZTEsIGUyKTsKICAgICAgICAgaWYgKGMg
IT09IHVuZGVmaW5lZCkgewotICAgICAgICAgIGNhc2VzID0gY2FzZXMuY29uY2F0KGMpOworICAg
ICAgICAgIGNhc2VzLnB1c2goYyk7CiAgICAgICAgIH0KICAgICAgIH0pOwogICAgIH0pOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVj
dXRpb24vZXhwcmVzc2lvbi9leHByZXNzaW9uLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9leHByZXNzaW9uLmpzCmlu
ZGV4IGQyNDg3YmM4N2E3Ni4uOGEwY2JhMGJhYTE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2V4cHJl
c3Npb24uanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRl
ci9leGVjdXRpb24vZXhwcmVzc2lvbi9leHByZXNzaW9uLmpzCkBAIC0xNDQsMTIgKzE0NCwxMiBA
QCBmdW5jdGlvbiBydW5CYXRjaCgKICAgY29uc3Qgc291cmNlID0gYAogc3RydWN0IElucHV0IHsK
ICR7cGFyYW1ldGVyVHlwZXMKLSAgLm1hcCgodHksIGkpID0+IGAgIEBzaXplKCR7a1ZhbHVlU3Ry
aWRlfSkgcGFyYW0ke2l9IDogJHtzdG9yYWdlVHlwZSh0eSl9O2ApCisgIC5tYXAoKHR5LCBpKSA9
PiBgICBAc2l6ZSgke2tWYWx1ZVN0cmlkZX0pIHBhcmFtJHtpfSA6ICR7c3RvcmFnZVR5cGUodHkp
fSxgKQogICAuam9pbignXG4nKX0KIH07CiAKIHN0cnVjdCBPdXRwdXQgewotICBAc2l6ZSgke2tW
YWx1ZVN0cmlkZX0pIHZhbHVlIDogJHtzdG9yYWdlVHlwZShyZXR1cm5UeXBlKX07CisgIEBzaXpl
KCR7a1ZhbHVlU3RyaWRlfSkgdmFsdWUgOiAke3N0b3JhZ2VUeXBlKHJldHVyblR5cGUpfQogfTsK
IAogQGdyb3VwKDApIEBiaW5kaW5nKDApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL3VuYXJ5L2YzMl9h
cml0aG1ldGljLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
c2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL3VuYXJ5L2YzMl9hcml0aG1ldGljLnNwZWMuanMK
aW5kZXggYTg5MGFmOGVlMGZmLi4xMjFjNDMwNjU2MWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vdW5h
cnkvZjMyX2FyaXRobWV0aWMuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL3VuYXJ5L2YzMl9hcml0aG1l
dGljLnNwZWMuanMKQEAgLTUsMTAgKzUsOSBAQCBFeGVjdXRpb24gVGVzdHMgZm9yIHRoZSBmMzIg
YXJpdGhtZXRpYyB1bmFyeSBleHByZXNzaW9uIG9wZXJhdGlvbnMKIGA7CiBpbXBvcnQgeyBtYWtl
VGVzdEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay90ZXN0X2dy
b3VwLmpzJzsKIGltcG9ydCB7IEdQVVRlc3QgfSBmcm9tICcuLi8uLi8uLi8uLi9ncHVfdGVzdC5q
cyc7Ci1pbXBvcnQgeyBjb3JyZWN0bHlSb3VuZGVkVGhyZXNob2xkIH0gZnJvbSAnLi4vLi4vLi4v
Li4vdXRpbC9jb21wYXJlLmpzJzsKLWltcG9ydCB7IGtWYWx1ZSB9IGZyb20gJy4uLy4uLy4uLy4u
L3V0aWwvY29uc3RhbnRzLmpzJzsKK2ltcG9ydCB7IGFueU9mLCBjb3JyZWN0bHlSb3VuZGVkVGhy
ZXNob2xkIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbC9jb21wYXJlLmpzJzsKIGltcG9ydCB7IGYz
MiwgVHlwZUYzMiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvY29udmVyc2lvbi5qcyc7Ci1pbXBv
cnQgeyBiaWFzZWRSYW5nZSwgbGluZWFyUmFuZ2UsIHF1YW50aXplVG9GMzIgfSBmcm9tICcuLi8u
Li8uLi8uLi91dGlsL21hdGguanMnOworaW1wb3J0IHsgZnVsbEYzMlJhbmdlLCBpc1N1Ym5vcm1h
bE51bWJlciwgcXVhbnRpemVUb0YzMiB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvbWF0aC5qcyc7
CiBpbXBvcnQgeyBydW4gfSBmcm9tICcuLi9leHByZXNzaW9uLmpzJzsKIAogaW1wb3J0IHsgdW5h
cnkgfSBmcm9tICcuL3VuYXJ5LmpzJzsKQEAgLTM1LDI1ICszNCwxNiBAQCBBY2N1cmFjeTogQ29y
cmVjdGx5IHJvdW5kZWQKIAogICAgIGNvbnN0IG1ha2VDYXNlID0geCA9PiB7CiAgICAgICBjb25z
dCBmMzJfeCA9IHF1YW50aXplVG9GMzIoeCk7Ci0gICAgICByZXR1cm4geyBpbnB1dDogW2YzMih4
KV0sIGV4cGVjdGVkOiBmMzIoLWYzMl94KSB9OworICAgICAgaWYgKGlzU3Vibm9ybWFsTnVtYmVy
KGYzMl94KSkgeworICAgICAgICByZXR1cm4geyBpbnB1dDogW2YzMih4KV0sIGV4cGVjdGVkOiBh
bnlPZihmMzIoLWYzMl94KSwgZjMyKDAuMCkpIH07CisgICAgICB9IGVsc2UgeworICAgICAgICBy
ZXR1cm4geyBpbnB1dDogW2YzMih4KV0sIGV4cGVjdGVkOiBmMzIoLWYzMl94KSB9OworICAgICAg
fQogICAgIH07CiAKLSAgICBsZXQgY2FzZXMgPSBbXTsKLSAgICBjb25zdCBudW1lcmljX3Jhbmdl
ID0gQXJyYXkoKTsKLSAgICBudW1lcmljX3JhbmdlLmNvbmNhdChiaWFzZWRSYW5nZShrVmFsdWUu
ZjMyLm5lZ2F0aXZlLm1heCwga1ZhbHVlLmYzMi5uZWdhdGl2ZS5taW4sIDEwMCkpOwotICAgIG51
bWVyaWNfcmFuZ2UuY29uY2F0KAotICAgICAgbGluZWFyUmFuZ2Uoa1ZhbHVlLmYzMi5zdWJub3Jt
YWwubmVnYXRpdmUubWluLCBrVmFsdWUuZjMyLnN1Ym5vcm1hbC5uZWdhdGl2ZS5tYXgsIDEwMCkK
KyAgICBjb25zdCBjYXNlcyA9IGZ1bGxGMzJSYW5nZSh7IG5lZ19ub3JtOiAyNTAsIG5lZ19zdWI6
IDIwLCBwb3Nfc3ViOiAyMCwgcG9zX25vcm06IDI1MCB9KS5tYXAoeCA9PgorICAgICAgbWFrZUNh
c2UoeCkKICAgICApOwogCi0gICAgbnVtZXJpY19yYW5nZS5jb25jYXQoMC4wKTsKLSAgICBudW1l
cmljX3JhbmdlLmNvbmNhdCgKLSAgICAgIGxpbmVhclJhbmdlKGtWYWx1ZS5mMzIuc3Vibm9ybWFs
LnBvc2l0aXZlLm1pbiwga1ZhbHVlLmYzMi5zdWJub3JtYWwucG9zaXRpdmUubWF4LCAxMDApCi0g
ICAgKTsKLQotICAgIG51bWVyaWNfcmFuZ2UuY29uY2F0KGJpYXNlZFJhbmdlKGtWYWx1ZS5mMzIu
cG9zaXRpdmUubWluLCBrVmFsdWUuZjMyLnBvc2l0aXZlLm1heCwgMTAwKSk7Ci0gICAgbnVtZXJp
Y19yYW5nZS5mb3JFYWNoKHggPT4gewotICAgICAgY2FzZXMgPSBjYXNlcy5jb25jYXQobWFrZUNh
c2UoeCkpOwotICAgIH0pOwotCiAgICAgcnVuKHQsIHVuYXJ5KCctJyksIFtUeXBlRjMyXSwgVHlw
ZUYzMiwgY2ZnLCBjYXNlcyk7CiAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vbWVtb3J5X21vZGVsL21lbW9yeV9t
b2RlbF9zZXR1cC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFk
ZXIvZXhlY3V0aW9uL21lbW9yeV9tb2RlbC9tZW1vcnlfbW9kZWxfc2V0dXAuanMKaW5kZXggNzU0
YzJlOTdiZWY4Li4wNzkxZDU0MjY3OTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL21lbW9yeV9tb2RlbC9tZW1vcnlfbW9k
ZWxfc2V0dXAuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3No
YWRlci9leGVjdXRpb24vbWVtb3J5X21vZGVsL21lbW9yeV9tb2RlbF9zZXR1cC5qcwpAQCAtNDkw
LDM1ICs0OTAsMzUgQEAgZXhwb3J0IGNsYXNzIE1lbW9yeU1vZGVsVGVzdGVyIHsKIC8qKiBEZWZp
bmVzIGNvbW1vbiBkYXRhIHN0cnVjdHVyZXMgdXNlZCBpbiBtZW1vcnkgbW9kZWwgdGVzdCBzaGFk
ZXJzLiAqLwogY29uc3Qgc2hhZGVyTWVtU3RydWN0dXJlcyA9IGAKICAgc3RydWN0IE1lbW9yeSB7
Ci0gICAgdmFsdWU6IGFycmF5PHUzMj47CisgICAgdmFsdWU6IGFycmF5PHUzMj4KICAgfTsKIAog
ICBzdHJ1Y3QgQXRvbWljTWVtb3J5IHsKLSAgICB2YWx1ZTogYXJyYXk8YXRvbWljPHUzMj4+Owor
ICAgIHZhbHVlOiBhcnJheTxhdG9taWM8dTMyPj4KICAgfTsKIAogICBzdHJ1Y3QgUmVhZFJlc3Vs
dCB7Ci0gICAgcjA6IGF0b21pYzx1MzI+OwotICAgIHIxOiBhdG9taWM8dTMyPjsKKyAgICByMDog
YXRvbWljPHUzMj4sCisgICAgcjE6IGF0b21pYzx1MzI+LAogICB9OwogCiAgIHN0cnVjdCBSZWFk
UmVzdWx0cyB7Ci0gICAgdmFsdWU6IGFycmF5PFJlYWRSZXN1bHQ+OworICAgIHZhbHVlOiBhcnJh
eTxSZWFkUmVzdWx0PgogICB9OwogCiAgIHN0cnVjdCBTdHJlc3NQYXJhbXNNZW1vcnkgewotICAg
IGRvX2JhcnJpZXI6IHUzMjsKLSAgICBtZW1fc3RyZXNzOiB1MzI7Ci0gICAgbWVtX3N0cmVzc19p
dGVyYXRpb25zOiB1MzI7Ci0gICAgbWVtX3N0cmVzc19wYXR0ZXJuOiB1MzI7Ci0gICAgcHJlX3N0
cmVzczogdTMyOwotICAgIHByZV9zdHJlc3NfaXRlcmF0aW9uczogdTMyOwotICAgIHByZV9zdHJl
c3NfcGF0dGVybjogdTMyOwotICAgIHBlcm11dGVfZmlyc3Q6IHUzMjsKLSAgICBwZXJtdXRlX3Nl
Y29uZDogdTMyOwotICAgIHRlc3Rpbmdfd29ya2dyb3VwczogdTMyOwotICAgIG1lbV9zdHJpZGU6
IHUzMjsKLSAgICBsb2NhdGlvbl9vZmZzZXQ6IHUzMjsKKyAgICBkb19iYXJyaWVyOiB1MzIsCisg
ICAgbWVtX3N0cmVzczogdTMyLAorICAgIG1lbV9zdHJlc3NfaXRlcmF0aW9uczogdTMyLAorICAg
IG1lbV9zdHJlc3NfcGF0dGVybjogdTMyLAorICAgIHByZV9zdHJlc3M6IHUzMiwKKyAgICBwcmVf
c3RyZXNzX2l0ZXJhdGlvbnM6IHUzMiwKKyAgICBwcmVfc3RyZXNzX3BhdHRlcm46IHUzMiwKKyAg
ICBwZXJtdXRlX2ZpcnN0OiB1MzIsCisgICAgcGVybXV0ZV9zZWNvbmQ6IHUzMiwKKyAgICB0ZXN0
aW5nX3dvcmtncm91cHM6IHUzMiwKKyAgICBtZW1fc3RyaWRlOiB1MzIsCisgICAgbG9jYXRpb25f
b2Zmc2V0OiB1MzIsCiAgIH07CiBgOwogCkBAIC01MzEsMTAgKzUzMSwxMCBAQCBjb25zdCBzaGFk
ZXJNZW1TdHJ1Y3R1cmVzID0gYAogICovCiBjb25zdCBmb3VyQmVoYXZpb3JUZXN0UmVzdWx0U3Ry
dWN0dXJlID0gYAogICBzdHJ1Y3QgVGVzdFJlc3VsdHMgewotICAgIHNlcTA6IGF0b21pYzx1MzI+
OwotICAgIHNlcTE6IGF0b21pYzx1MzI+OwotICAgIGludGVybGVhdmVkOiBhdG9taWM8dTMyPjsK
LSAgICB3ZWFrOiBhdG9taWM8dTMyPjsKKyAgICBzZXEwOiBhdG9taWM8dTMyPiwKKyAgICBzZXEx
OiBhdG9taWM8dTMyPiwKKyAgICBpbnRlcmxlYXZlZDogYXRvbWljPHUzMj4sCisgICAgd2Vhazog
YXRvbWljPHUzMj4sCiAgIH07CiBgOwogCkBAIC01NDYsOCArNTQ2LDggQEAgY29uc3QgZm91ckJl
aGF2aW9yVGVzdFJlc3VsdFN0cnVjdHVyZSA9IGAKICAqLwogY29uc3QgdHdvQmVoYXZpb3JUZXN0
UmVzdWx0U3RydWN0dXJlID0gYAogICBzdHJ1Y3QgVGVzdFJlc3VsdHMgewotICAgIHNlcTogYXRv
bWljPHUzMj47Ci0gICAgd2VhazogYXRvbWljPHUzMj47CisgICAgc2VxOiBhdG9taWM8dTMyPiwK
KyAgICB3ZWFrOiBhdG9taWM8dTMyPiwKICAgfTsKIGA7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL3JvYnVzdF9hY2Nl
c3Muc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIv
ZXhlY3V0aW9uL3JvYnVzdF9hY2Nlc3Muc3BlYy5qcwppbmRleCA5NjZkZjhkNThmMTQuLmY5ZmRh
MjE0NzY3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3NoYWRlci9leGVjdXRpb24vcm9idXN0X2FjY2Vzcy5zcGVjLmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL3JvYnVzdF9hY2Nlc3Mu
c3BlYy5qcwpAQCAtMzYsMTIgKzM2LDEyIEBAIGZ1bmN0aW9uIHJ1blNoYWRlclRlc3QodCwgc3Rh
Z2UsIHRlc3RTb3VyY2UsIGxheW91dCwgdGVzdEJpbmRpbmdzLCBkeW5hbWljT2Zmc2V0CiAKICAg
Y29uc3Qgc291cmNlID0gYAogICAgIHN0cnVjdCBDb25zdGFudHMgewotICAgICAgemVybzogdTMy
OworICAgICAgemVybzogdTMyCiAgICAgfTsKICAgICBAZ3JvdXAoMSkgQGJpbmRpbmcoMCkgdmFy
PHVuaWZvcm0+IGNvbnN0YW50czogQ29uc3RhbnRzOwogCiAgICAgc3RydWN0IFJlc3VsdCB7Ci0g
ICAgICB2YWx1ZTogdTMyOworICAgICAgdmFsdWU6IHUzMgogICAgIH07CiAgICAgQGdyb3VwKDEp
IEBiaW5kaW5nKDEpIHZhcjxzdG9yYWdlLCB3cml0ZT4gcmVzdWx0OiBSZXN1bHQ7CiAKQEAgLTE4
OSw5ICsxODksOSBAQCBnLnRlc3QoJ2xpbmVhcl9tZW1vcnknKQogICAgIC8vIGluIHRoZSBnbG9i
YWwgc2NvcGUgb3IgaW5zaWRlIHRoZSB0ZXN0IGZ1bmN0aW9uIGl0c2VsZi4KICAgICBjb25zdCBz
dHJ1Y3REZWNsID0gYAogICAgICAgc3RydWN0IFMgewotICAgICAgICBzdGFydENhbmFyeTogYXJy
YXk8dTMyLCAxMD47Ci0gICAgICAgIGRhdGE6ICR7dHlwZX07Ci0gICAgICAgIGVuZENhbmFyeTog
YXJyYXk8dTMyLCAxMD47CisgICAgICAgIHN0YXJ0Q2FuYXJ5OiBhcnJheTx1MzIsIDEwPiwKKyAg
ICAgICAgZGF0YTogJHt0eXBlfSwKKyAgICAgICAgZW5kQ2FuYXJ5OiBhcnJheTx1MzIsIDEwPiwK
ICAgICAgIH07YDsKIAogICAgIGNvbnN0IHRlc3RHcm91cEJHTEVudGlyZXMgPSBbXTsKQEAgLTIw
NSw3ICsyMDUsNyBAQCBnLnRlc3QoJ2xpbmVhcl9tZW1vcnknKQogICAgICAgICAgIGNvbnN0IHF1
YWxpZmllcnMgPSBzdG9yYWdlQ2xhc3MgPT09ICdzdG9yYWdlJyA/IGBzdG9yYWdlLCAke3N0b3Jh
Z2VNb2RlfWAgOiBzdG9yYWdlQ2xhc3M7CiAgICAgICAgICAgZ2xvYmFsU291cmNlICs9IGAKICAg
ICAgICAgICBzdHJ1Y3QgVGVzdERhdGEgewotICAgICAgICAgICAgZGF0YTogJHt0eXBlfTsKKyAg
ICAgICAgICAgIGRhdGE6ICR7dHlwZX0sCiAgICAgICAgICAgfTsKICAgICAgICAgICBAZ3JvdXAo
MCkgQGJpbmRpbmcoMCkgdmFyPCR7cXVhbGlmaWVyc30+IHM6IFRlc3REYXRhO2A7CiAKQEAgLTMw
Myw3ICszMDMsMTMgQEAgZy50ZXN0KCdsaW5lYXJfbWVtb3J5JykKICAgICAgICAgICBzd2l0Y2gg
KGFjY2VzcykgewogICAgICAgICAgICAgY2FzZSAncmVhZCc6CiAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBleHByTG9hZEVsZW1lbnQgPSBpc0F0b21pYyA/IGBhdG9taWNM
b2FkKCYke2V4cHJFbGVtZW50fSlgIDogZXhwckVsZW1lbnQ7CisgICAgICAgICAgICAgICAgbGV0
IGV4cHJMb2FkRWxlbWVudCA9IGlzQXRvbWljID8gYGF0b21pY0xvYWQoJiR7ZXhwckVsZW1lbnR9
KWAgOiBleHByRWxlbWVudDsKKyAgICAgICAgICAgICAgICBpZiAoc3RvcmFnZUNsYXNzID09PSAn
dW5pZm9ybScgJiYgY29udGFpbmVyVHlwZSA9PT0gJ2FycmF5JykgeworICAgICAgICAgICAgICAg
ICAgLy8gU2NhbGFyIHR5cGVzIHdpbGwgYmUgd3JhcHBlZCBpbiBhIHZlYzQgdG8gc2F0aXNmeSBh
cnJheSBlbGVtZW50IHNpemUKKyAgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmVtZW50cyBmb3Ig
dGhlIHVuaWZvcm0gYWRkcmVzcyBzcGFjZSwgc28gd2UgbmVlZCBhbiBhZGRpdGlvbmFsIGluZGV4
CisgICAgICAgICAgICAgICAgICAvLyBhY2Nlc3NvciBleHByZXNzaW9uLgorICAgICAgICAgICAg
ICAgICAgZXhwckxvYWRFbGVtZW50ICs9ICdbMF0nOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBsZXQgY29uZGl0aW9uID0gYCR7ZXhwckxvYWRFbGVtZW50fSAhPSAke2V4cHJa
ZXJvRWxlbWVudH1gOwogICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJUeXBlID09PSAnbWF0
cml4JykgY29uZGl0aW9uID0gYGFueSgke2NvbmRpdGlvbn0pYDsKICAgICAgICAgICAgICAgICB0
ZXN0RnVuY3Rpb25Tb3VyY2UgKz0gYApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vcm9idXN0X2FjY2Vzc192ZXJ0ZXguc3Bl
Yy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0
aW9uL3JvYnVzdF9hY2Nlc3NfdmVydGV4LnNwZWMuanMKaW5kZXggNzQ5OGQ3OWYyMTM1Li42NWEz
OGVjNWI1ZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9zaGFkZXIvZXhlY3V0aW9uL3JvYnVzdF9hY2Nlc3NfdmVydGV4LnNwZWMuanMKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vcm9idXN0
X2FjY2Vzc192ZXJ0ZXguc3BlYy5qcwpAQCAtMzE2LDcgKzMxNiw3IEBAIGNsYXNzIEYgZXh0ZW5k
cyBHUFVUZXN0IHsKICAgICAgIGxldCBjdXJyQXR0cmlidXRlID0gMDsKICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgYnVmZmVyQ291bnQ7IGkrKykgewogICAgICAgICBmb3IgKGxldCBqID0gMDsg
aiA8IGF0dHJpYnV0ZXNQZXJCdWZmZXI7IGorKykgewotICAgICAgICAgIGxheW91dFN0ciArPSBg
QGxvY2F0aW9uKCR7Y3VyckF0dHJpYnV0ZX0pIGFfJHtjdXJyQXR0cmlidXRlfSA6ICR7dHlwZUlu
Zm8ud2dzbFR5cGV9O1xuYDsKKyAgICAgICAgICBsYXlvdXRTdHIgKz0gYEBsb2NhdGlvbigke2N1
cnJBdHRyaWJ1dGV9KSBhXyR7Y3VyckF0dHJpYnV0ZX0gOiAke3R5cGVJbmZvLndnc2xUeXBlfSxc
bmA7CiAgICAgICAgICAgYXR0cmlidXRlTmFtZXMucHVzaChgYV8ke2N1cnJBdHRyaWJ1dGV9YCk7
CiAgICAgICAgICAgY3VyckF0dHJpYnV0ZSsrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9zYW1wbGlu
Zy9ncmFkaWVudHNfaW5fdmFyeWluZ19sb29wLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9zYW1wbGluZy9ncmFkaWVudHNfaW5f
dmFyeWluZ19sb29wLnNwZWMuanMKaW5kZXggNWIxMzA5MmU5MTVjLi4zYmY4NjViYmNjZTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhl
Y3V0aW9uL3NhbXBsaW5nL2dyYWRpZW50c19pbl92YXJ5aW5nX2xvb3Auc3BlYy5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9zYW1w
bGluZy9ncmFkaWVudHNfaW5fdmFyeWluZ19sb29wLnNwZWMuanMKQEAgLTQzLDggKzQzLDggQEAg
Y2xhc3MgRGVyaXZhdGl2ZXNUZXN0IGV4dGVuZHMgR1BVVGVzdCB7CiAgICAgICAgIG1vZHVsZTog
dGhpcy5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAgICAgICAgICBjb2RlOiBgCiAgICAg
ICAgICAgICBzdHJ1Y3QgT3V0cHV0cyB7Ci0gICAgICAgICAgICAgIEBidWlsdGluKHBvc2l0aW9u
KSBQb3NpdGlvbiA6IHZlYzQ8ZjMyPjsKLSAgICAgICAgICAgICAgQGxvY2F0aW9uKDApIGZyYWdV
ViA6IHZlYzI8ZjMyPjsKKyAgICAgICAgICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIFBvc2l0aW9u
IDogdmVjNDxmMzI+LAorICAgICAgICAgICAgICBAbG9jYXRpb24oMCkgZnJhZ1VWIDogdmVjMjxm
MzI+LAogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgQHN0YWdlKHZlcnRleCkgZm4gbWFp
bigKQEAgLTg1LDcgKzg1LDcgQEAgY2xhc3MgRGVyaXZhdGl2ZXNUZXN0IGV4dGVuZHMgR1BVVGVz
dCB7CiAgICAgICAgIG1vZHVsZTogdGhpcy5kZXZpY2UuY3JlYXRlU2hhZGVyTW9kdWxlKHsKICAg
ICAgICAgICBjb2RlOiBgCiAgICAgICAgICAgICBzdHJ1Y3QgVW5pZm9ybXMgewotICAgICAgICAg
ICAgICBudW1JdGVyYXRpb25zIDogaTMyOworICAgICAgICAgICAgICBudW1JdGVyYXRpb25zIDog
aTMyCiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgQGJpbmRpbmcoMCkgQGdyb3VwKDApIHZh
cjx1bmlmb3JtPiB1bmlmb3JtcyA6IFVuaWZvcm1zOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9zaGFkZXJfaW8vY29t
cHV0ZV9idWlsdGlucy5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2Vi
Z3B1L3NoYWRlci9leGVjdXRpb24vc2hhZGVyX2lvL2NvbXB1dGVfYnVpbHRpbnMuc3BlYy5qcwpp
bmRleCA0ZjFiY2QzNGI3ZmYuLmVmZGI1ZGVlNmY4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vc2hhZGVyX2lvL2NvbXB1
dGVfYnVpbHRpbnMuc3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9zaGFkZXJfaW8vY29tcHV0ZV9idWlsdGlucy5zcGVjLmpz
CkBAIC02NywxMSArNjcsMTEgQEAgZy50ZXN0KCdpbnB1dHMnKQogICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgJ3N0cnVjdCc6CiAgICAgICAgIHN0cnVjdHVyZXMgPSBgc3RydWN0IElucHV0cyB7
Ci0gICAgICAgICAgICBAYnVpbHRpbihsb2NhbF9pbnZvY2F0aW9uX2lkKSBsb2NhbF9pZCA6IHZl
YzM8dTMyPjsKLSAgICAgICAgICAgIEBidWlsdGluKGxvY2FsX2ludm9jYXRpb25faW5kZXgpIGxv
Y2FsX2luZGV4IDogdTMyOwotICAgICAgICAgICAgQGJ1aWx0aW4oZ2xvYmFsX2ludm9jYXRpb25f
aWQpIGdsb2JhbF9pZCA6IHZlYzM8dTMyPjsKLSAgICAgICAgICAgIEBidWlsdGluKHdvcmtncm91
cF9pZCkgZ3JvdXBfaWQgOiB2ZWMzPHUzMj47Ci0gICAgICAgICAgICBAYnVpbHRpbihudW1fd29y
a2dyb3VwcykgbnVtX2dyb3VwcyA6IHZlYzM8dTMyPjsKKyAgICAgICAgICAgIEBidWlsdGluKGxv
Y2FsX2ludm9jYXRpb25faWQpIGxvY2FsX2lkIDogdmVjMzx1MzI+LAorICAgICAgICAgICAgQGJ1
aWx0aW4obG9jYWxfaW52b2NhdGlvbl9pbmRleCkgbG9jYWxfaW5kZXggOiB1MzIsCisgICAgICAg
ICAgICBAYnVpbHRpbihnbG9iYWxfaW52b2NhdGlvbl9pZCkgZ2xvYmFsX2lkIDogdmVjMzx1MzI+
LAorICAgICAgICAgICAgQGJ1aWx0aW4od29ya2dyb3VwX2lkKSBncm91cF9pZCA6IHZlYzM8dTMy
PiwKKyAgICAgICAgICAgIEBidWlsdGluKG51bV93b3JrZ3JvdXBzKSBudW1fZ3JvdXBzIDogdmVj
Mzx1MzI+LAogICAgICAgICAgIH07YDsKICAgICAgICAgcGFyYW1zID0gYGlucHV0cyA6IElucHV0
c2A7CiAgICAgICAgIGxvY2FsX2lkID0gJ2lucHV0cy5sb2NhbF9pZCc7CkBAIC04MiwxMSArODIs
MTEgQEAgZy50ZXN0KCdpbnB1dHMnKQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgJ21peGVk
JzoKICAgICAgICAgc3RydWN0dXJlcyA9IGBzdHJ1Y3QgSW5wdXRzQSB7Ci0gICAgICAgICAgQGJ1
aWx0aW4obG9jYWxfaW52b2NhdGlvbl9pbmRleCkgbG9jYWxfaW5kZXggOiB1MzI7Ci0gICAgICAg
ICAgQGJ1aWx0aW4oZ2xvYmFsX2ludm9jYXRpb25faWQpIGdsb2JhbF9pZCA6IHZlYzM8dTMyPjsK
KyAgICAgICAgICBAYnVpbHRpbihsb2NhbF9pbnZvY2F0aW9uX2luZGV4KSBsb2NhbF9pbmRleCA6
IHUzMiwKKyAgICAgICAgICBAYnVpbHRpbihnbG9iYWxfaW52b2NhdGlvbl9pZCkgZ2xvYmFsX2lk
IDogdmVjMzx1MzI+LAogICAgICAgICB9OwogICAgICAgICBzdHJ1Y3QgSW5wdXRzQiB7Ci0gICAg
ICAgICAgQGJ1aWx0aW4od29ya2dyb3VwX2lkKSBncm91cF9pZCA6IHZlYzM8dTMyPjsKKyAgICAg
ICAgICBAYnVpbHRpbih3b3JrZ3JvdXBfaWQpIGdyb3VwX2lkIDogdmVjMzx1MzI+CiAgICAgICAg
IH07YDsKICAgICAgICAgcGFyYW1zID0gYEBidWlsdGluKGxvY2FsX2ludm9jYXRpb25faWQpIGxv
Y2FsX2lkIDogdmVjMzx1MzI+LAogICAgICAgICAgICAgICAgICAgaW5wdXRzQSA6IElucHV0c0Es
CkBAIC0xMDMsMTAgKzEwMywxMCBAQCBnLnRlc3QoJ2lucHV0cycpCiAgICAgLy8gV0dTTCBzaGFk
ZXIgdGhhdCBzdG9yZXMgZXZlcnkgYnVpbHRpbiB2YWx1ZSB0byBhIGJ1ZmZlciwgZm9yIGV2ZXJ5
IGludm9jYXRpb24gaW4gdGhlIGdyaWQuCiAgICAgY29uc3Qgd2dzbCA9IGAKICAgICAgIHN0cnVj
dCBTIHsKLSAgICAgICAgZGF0YSA6IGFycmF5PHUzMj47CisgICAgICAgIGRhdGEgOiBhcnJheTx1
MzI+CiAgICAgICB9OwogICAgICAgc3RydWN0IFYgewotICAgICAgICBkYXRhIDogYXJyYXk8dmVj
Mzx1MzI+PjsKKyAgICAgICAgZGF0YSA6IGFycmF5PHZlYzM8dTMyPj4KICAgICAgIH07CiAgICAg
ICBAZ3JvdXAoMCkgQGJpbmRpbmcoMCkgdmFyPHN0b3JhZ2UsIHdyaXRlPiBsb2NhbF9pZF9vdXQg
OiBWOwogICAgICAgQGdyb3VwKDApIEBiaW5kaW5nKDEpIHZhcjxzdG9yYWdlLCB3cml0ZT4gbG9j
YWxfaW5kZXhfb3V0IDogUzsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL3NoYWRlcl9pby9zaGFyZWRfc3RydWN0cy5zcGVj
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRp
b24vc2hhZGVyX2lvL3NoYXJlZF9zdHJ1Y3RzLnNwZWMuanMKaW5kZXggZWE1NjE3YjM2ZWNhLi40
ZWNjYjA3OTliNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9zaGFkZXIvZXhlY3V0aW9uL3NoYWRlcl9pby9zaGFyZWRfc3RydWN0cy5zcGVjLmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9u
L3NoYWRlcl9pby9zaGFyZWRfc3RydWN0cy5zcGVjLmpzCkBAIC0zMCw5ICszMCw5IEBAIGcudGVz
dCgnc2hhcmVkX3dpdGhfYnVmZmVyJykKICAgICAvLyBhdHRyaWJ1dGVzLCBhbmQgYWxzbyBsYXlv
dXQgYXR0cmlidXRlcyBmb3IgdGhlIHN0b3JhZ2UgYnVmZmVyLgogICAgIGNvbnN0IHdnc2wgPSBg
CiAgICAgICBzdHJ1Y3QgUyB7Ci0gICAgICAgIC8qIGJ5dGUgb2Zmc2V0OiAgMCAqLyBAc2l6ZSgz
MikgIEBidWlsdGluKHdvcmtncm91cF9pZCkgZ3JvdXBfaWQgOiB2ZWMzPHUzMj47Ci0gICAgICAg
IC8qIGJ5dGUgb2Zmc2V0OiAzMiAqLyAgICAgICAgICAgIEBidWlsdGluKGxvY2FsX2ludm9jYXRp
b25faW5kZXgpIGxvY2FsX2luZGV4IDogdTMyOwotICAgICAgICAvKiBieXRlIG9mZnNldDogNjQg
Ki8gQGFsaWduKDY0KSBAYnVpbHRpbihudW1fd29ya2dyb3VwcykgbnVtR3JvdXBzIDogdmVjMzx1
MzI+OworICAgICAgICAvKiBieXRlIG9mZnNldDogIDAgKi8gQHNpemUoMzIpICBAYnVpbHRpbih3
b3JrZ3JvdXBfaWQpIGdyb3VwX2lkIDogdmVjMzx1MzI+LAorICAgICAgICAvKiBieXRlIG9mZnNl
dDogMzIgKi8gICAgICAgICAgICBAYnVpbHRpbihsb2NhbF9pbnZvY2F0aW9uX2luZGV4KSBsb2Nh
bF9pbmRleCA6IHUzMiwKKyAgICAgICAgLyogYnl0ZSBvZmZzZXQ6IDY0ICovIEBhbGlnbig2NCkg
QGJ1aWx0aW4obnVtX3dvcmtncm91cHMpIG51bUdyb3VwcyA6IHZlYzM8dTMyPiwKICAgICAgIH07
CiAKICAgICAgIEBncm91cCgwKSBAYmluZGluZygwKQpAQCAtMTIwLDggKzEyMCw4IEBAIGcudGVz
dCgnc2hhcmVkX2JldHdlZW5fc3RhZ2VzJykKICAgICBjb25zdCBzaXplID0gWzMxLCAzMV07CiAg
ICAgY29uc3Qgd2dzbCA9IGAKICAgICAgIHN0cnVjdCBJbnRlcmZhY2UgewotICAgICAgICBAYnVp
bHRpbihwb3NpdGlvbikgcG9zaXRpb24gOiB2ZWM0PGYzMj47Ci0gICAgICAgIEBsb2NhdGlvbigw
KSBjb2xvciA6IGYzMjsKKyAgICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0aW9uIDogdmVj
NDxmMzI+LAorICAgICAgICBAbG9jYXRpb24oMCkgY29sb3IgOiBmMzIsCiAgICAgICB9OwogCiAg
ICAgICB2YXI8cHJpdmF0ZT4gdmVydGljZXMgOiBhcnJheTx2ZWMyPGYzMj4sIDM+ID0gYXJyYXk8
dmVjMjxmMzI+LCAzPigKQEAgLTIzOSwxMiArMjM5LDEyIEBAIGcudGVzdCgnc2hhcmVkX3dpdGhf
bm9uX2VudHJ5X3BvaW50X2Z1bmN0aW9uJykKICAgICAvLyBmdW5jdGlvbnMuCiAgICAgY29uc3Qg
d2dzbCA9IGAKICAgICAgIHN0cnVjdCBJbnB1dHMgewotICAgICAgICBAYnVpbHRpbih2ZXJ0ZXhf
aW5kZXgpIGluZGV4IDogdTMyOwotICAgICAgICBAbG9jYXRpb24oMCkgY29sb3IgOiB2ZWM0PGYz
Mj47CisgICAgICAgIEBidWlsdGluKHZlcnRleF9pbmRleCkgaW5kZXggOiB1MzIsCisgICAgICAg
IEBsb2NhdGlvbigwKSBjb2xvciA6IHZlYzQ8ZjMyPiwKICAgICAgIH07CiAgICAgICBzdHJ1Y3Qg
T3V0cHV0cyB7Ci0gICAgICAgIEBidWlsdGluKHBvc2l0aW9uKSBwb3NpdGlvbiA6IHZlYzQ8ZjMy
PjsKLSAgICAgICAgQGxvY2F0aW9uKDApIGNvbG9yIDogdmVjNDxmMzI+OworICAgICAgICBAYnVp
bHRpbihwb3NpdGlvbikgcG9zaXRpb24gOiB2ZWM0PGYzMj4sCisgICAgICAgIEBsb2NhdGlvbigw
KSBjb2xvciA6IHZlYzQ8ZjMyPiwKICAgICAgIH07CiAKICAgICAgIHZhcjxwcml2YXRlPiB2ZXJ0
aWNlcyA6IGFycmF5PHZlYzI8ZjMyPiwgMz4gPSBhcnJheTx2ZWMyPGYzMj4sIDM+KApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRp
b24vemVyb19pbml0LnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvc2hhZGVyL2V4ZWN1dGlvbi96ZXJvX2luaXQuc3BlYy5qcwppbmRleCA5ZmQ2ZGNmMGU2YTUu
LmUzMzgyMmVhMjc5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L3NoYWRlci9leGVjdXRpb24vemVyb19pbml0LnNwZWMuanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vemVyb19pbml0LnNw
ZWMuanMKQEAgLTIyNSw5ICsyMjUsMTMgQEAgZy50ZXN0KCdjb21wdXRlLHplcm9faW5pdCcpCiAg
IC5mbihhc3luYyB0ID0+IHsKICAgICBsZXQgbW9kdWxlU2NvcGUgPSBgCiAgICAgICBzdHJ1Y3Qg
T3V0cHV0IHsKLSAgICAgICAgZmFpbGVkIDogYXRvbWljPHUzMj47Ci0gICAgICB9OwotICAgICAg
QGdyb3VwKDApIEBiaW5kaW5nKDApIHZhciA8c3RvcmFnZSwgcmVhZF93cml0ZT4gb3V0cHV0IDog
T3V0cHV0OworICAgICAgICBmYWlsZWQgOiBhdG9taWM8dTMyPgorICAgICAgfQorICAgICAgQGdy
b3VwKDApIEBiaW5kaW5nKDApIHZhcjxzdG9yYWdlLCByZWFkX3dyaXRlPiBvdXRwdXQgOiBPdXRw
dXQ7CisKKyAgICAgIC8vIFRoaXMgdW5pZm9ybSB2YWx1ZSB0aGF0J3MgYSB6ZXJvIGlzIHVzZWQg
dG8gcHJldmVudCB0aGUgc2hhZGVyIGNvbXBpbGVycyBmcm9tIHRyeWluZyB0bworICAgICAgLy8g
dW5yb2xsIHRoZSBtYXNzaXZlIGxvb3BzIGdlbmVyYXRlZCBieSB0aGVzZSB0ZXN0cy4KKyAgICAg
IEBncm91cCgwKSBAYmluZGluZygxKSB2YXI8dW5pZm9ybT4gemVybyA6IHUzMjsKICAgICBgOwog
ICAgIGxldCBmdW5jdGlvblNjb3BlID0gJyc7CiAKQEAgLTI1Myw3ICsyNTcsNyBAQCBnLnRlc3Qo
J2NvbXB1dGUsemVyb19pbml0JykKICAgICAgICAgICAgICAgICAgICAgYCR7dHlwZU5hbWV9X01l
bWJlciR7aX1gLAogICAgICAgICAgICAgICAgICAgICBtZW1iZXIsCiAgICAgICAgICAgICAgICAg
ICAgIGRlcHRoICsgMQotICAgICAgICAgICAgICAgICAgKX07YDsKKyAgICAgICAgICAgICAgICAg
ICl9LGA7CiAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAuam9pbignJyk7CiAg
ICAgICAgICAgICAgIGRlY2xhcmVkU3RydWN0VHlwZXMuc2V0KHR5cGUsIHR5cGVOYW1lKTsKQEAg
LTI5OSw3ICszMDMsNyBAQCBnLnRlc3QoJ2NvbXB1dGUsemVyb19pbml0JykKICAgICAgICAgICAg
IGNhc2UgJ2FycmF5JzoKICAgICAgICAgICAgICAgcmV0dXJuIGBcbmZvciAodmFyIGkke2RlcHRo
fSA9IDB1OyBpJHtkZXB0aH0gPCAkewogICAgICAgICAgICAgICAgIHR5cGUubGVuZ3RoCi0gICAg
ICAgICAgICAgIH11OyBpJHtkZXB0aH0gPSBpJHtkZXB0aH0gKyAxdSkgeworICAgICAgICAgICAg
ICB9dSArIHplcm87IGkke2RlcHRofSA9IGkke2RlcHRofSArIDF1KSB7CiAgICAgICAgICAgICAg
ICAgJHtjaGVja1plcm8oYCR7dmFsdWV9W2kke2RlcHRofV1gLCB0eXBlLmVsZW1lbnRUeXBlLCBk
ZXB0aCArIDEpfQogICAgICAgICAgICAgICB9YDsKICAgICAgICAgICAgIGNhc2UgJ3N0cnVjdCc6
CkBAIC0zMTEsNyArMzE1LDcgQEAgZy50ZXN0KCdjb21wdXRlLHplcm9faW5pdCcpCiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICBpZiAodHlwZS5jb250YWluZXJUeXBlLmluZGV4
T2YoJ3ZlYycpICE9PSAtMSkgewogICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHR5cGUu
Y29udGFpbmVyVHlwZVszXTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYFxuZm9yICh2YXIgaSR7
ZGVwdGh9ID0gMHU7IGkke2RlcHRofSA8ICR7bGVuZ3RofXU7IGkke2RlcHRofSA9IGkke2RlcHRo
fSArIDF1KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGBcbmZvciAodmFyIGkke2RlcHRofSA9
IDB1OyBpJHtkZXB0aH0gPCAke2xlbmd0aH11ICsgemVybzsgaSR7ZGVwdGh9ID0gaSR7ZGVwdGh9
ICsgMXUpIHsKICAgICAgICAgICAgICAgICAgICR7Y2hlY2taZXJvKAogICAgICAgICAgICAgICAg
ICAgICBgJHt2YWx1ZX1baSR7ZGVwdGh9XWAsCiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTMy
Niw3ICszMzAsNyBAQCBnLnRlc3QoJ2NvbXB1dGUsemVyb19pbml0JykKICAgICAgICAgICAgICAg
fSBlbHNlIGlmICh0eXBlLmNvbnRhaW5lclR5cGUuaW5kZXhPZignbWF0JykgIT09IC0xKSB7CiAg
ICAgICAgICAgICAgICAgY29uc3QgY29scyA9IHR5cGUuY29udGFpbmVyVHlwZVszXTsKICAgICAg
ICAgICAgICAgICBjb25zdCByb3dzID0gdHlwZS5jb250YWluZXJUeXBlWzVdOwotICAgICAgICAg
ICAgICAgIHJldHVybiBgXG5mb3IgKHZhciBjJHtkZXB0aH0gPSAwdTsgYyR7ZGVwdGh9IDwgJHtj
b2xzfXU7IGMke2RlcHRofSA9IGMke2RlcHRofSArIDF1KSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGBcbmZvciAodmFyIGMke2RlcHRofSA9IDB1OyBjJHtkZXB0aH0gPCAke2NvbHN9dSArIHpl
cm87IGMke2RlcHRofSA9IGMke2RlcHRofSArIDF1KSB7CiAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciByJHtkZXB0aH0gPSAwdTsgciR7ZGVwdGh9IDwgJHtyb3dzfXU7IHIke2RlcHRofSA9IHIk
e2RlcHRofSArIDF1KSB7CiAgICAgICAgICAgICAgICAgICAgICR7Y2hlY2taZXJvKAogICAgICAg
ICAgICAgICAgICAgICAgIGAke3ZhbHVlfVtjJHtkZXB0aH1dW3Ike2RlcHRofV1gLApAQCAtMzgw
LDYgKzM4NCw3IEBAIGcudGVzdCgnY29tcHV0ZSx6ZXJvX2luaXQnKQogICAgICAgZm4gbWFpbigp
IHsKICAgICAgICAgJHtmdW5jdGlvblNjb3BlfQogICAgICAgICAke2NoZWNrWmVyb0NvZGV9Cisg
ICAgICAgIF8gPSB6ZXJvOwogICAgICAgfQogICAgIGA7CiAKQEAgLTQwMCw2ICs0MDUsMTMgQEAg
Zy50ZXN0KCdjb21wdXRlLHplcm9faW5pdCcpCiAKICAgICB0LnRyYWNrRm9yQ2xlYW51cChyZXN1
bHRCdWZmZXIpOwogCisgICAgY29uc3QgemVyb0J1ZmZlciA9IHQuZGV2aWNlLmNyZWF0ZUJ1ZmZl
cih7CisgICAgICBzaXplOiA0LAorICAgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLlVOSUZPUk0s
CisgICAgfSk7CisKKyAgICB0LnRyYWNrRm9yQ2xlYW51cCh6ZXJvQnVmZmVyKTsKKwogICAgIGNv
bnN0IGJpbmRHcm91cCA9IHQuZGV2aWNlLmNyZWF0ZUJpbmRHcm91cCh7CiAgICAgICBsYXlvdXQ6
IHBpcGVsaW5lLmdldEJpbmRHcm91cExheW91dCgwKSwKICAgICAgIGVudHJpZXM6IFsKQEAgLTQw
OSw2ICs0MjEsMTMgQEAgZy50ZXN0KCdjb21wdXRlLHplcm9faW5pdCcpCiAgICAgICAgICAgICBi
dWZmZXI6IHJlc3VsdEJ1ZmZlciwKICAgICAgICAgICB9LAogICAgICAgICB9LAorCisgICAgICAg
IHsKKyAgICAgICAgICBiaW5kaW5nOiAxLAorICAgICAgICAgIHJlc291cmNlOiB7CisgICAgICAg
ICAgICBidWZmZXI6IHplcm9CdWZmZXIsCisgICAgICAgICAgfSwKKyAgICAgICAgfSwKICAgICAg
IF0sCiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9zaGFkZXIvdHlwZXMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvc2hhZGVyL3R5cGVzLmpzCmluZGV4IDBjM2FiOTJiYjg0NS4uMWM4MzZhMGViYWNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL3R5
cGVzLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIv
dHlwZXMuanMKQEAgLTEyNiw3ICsxMjYsNyBAQCBleHBvcnQgZnVuY3Rpb24qIGdlbmVyYXRlVHlw
ZXMoeyBzdG9yYWdlQ2xhc3MsIGJhc2VUeXBlLCBjb250YWluZXJUeXBlLCBpc0F0b21pYwogICAg
IC8vIFNpemVkCiAgICAgaWYgKHN0b3JhZ2VDbGFzcyA9PT0gJ3VuaWZvcm0nKSB7CiAgICAgICB5
aWVsZCB7Ci0gICAgICAgIHR5cGU6IGBAc3RyaWRlKDE2KSBhcnJheTwke3NjYWxhclR5cGV9LCR7
a0FycmF5TGVuZ3RofT5gLAorICAgICAgICB0eXBlOiBgYXJyYXk8dmVjNDwke3NjYWxhclR5cGV9
Piwke2tBcnJheUxlbmd0aH0+YCwKICAgICAgICAgX2tUeXBlSW5mbzogYXJyYXlUeXBlSW5mbywK
ICAgICAgIH07CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vYnVpbHRpbnMuc3Bl
Yy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRh
dGlvbi9zaGFkZXJfaW8vYnVpbHRpbnMuc3BlYy5qcwppbmRleCAwZWY1ZGMwNWZiY2QuLjIxYjM5
ZjllYjQ0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3NoYWRlci92YWxpZGF0aW9uL3NoYWRlcl9pby9idWlsdGlucy5zcGVjLmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJf
aW8vYnVpbHRpbnMuc3BlYy5qcwpAQCAtMTEzLDcgKzExMyw3IEBAIGcudGVzdCgndHlwZScpCiAg
ICAgaWYgKHQucGFyYW1zLnRhcmdldF90eXBlID09PSAnTXlTdHJ1Y3QnKSB7CiAgICAgICAvLyBH
ZW5lcmF0ZSBhIHN0cnVjdCB0aGF0IGNvbnRhaW5zIHRoZSBjb3JyZWN0IGJ1aWx0LWluIHR5cGUu
CiAgICAgICBjb2RlICs9ICdzdHJ1Y3QgTXlTdHJ1Y3Qge1xuJzsKLSAgICAgIGNvZGUgKz0gYCAg
dmFsdWUgOiAke3QucGFyYW1zLnR5cGV9O1xuYDsKKyAgICAgIGNvZGUgKz0gYCAgdmFsdWUgOiAk
e3QucGFyYW1zLnR5cGV9XG5gOwogICAgICAgY29kZSArPSAnfTtcblxuJzsKICAgICB9CiAKQEAg
LTE0NiwxMCArMTQ2LDEwIEBAIGcudGVzdCgnbmVzdGluZycpCiAgICAgLy8gR2VuZXJhdGUgYSBz
dHJ1Y3QgdGhhdCBjb250YWlucyBhIHNhbXBsZV9tYXNrIGJ1aWx0aW4sIG5lc3RlZCBpbnNpZGUg
YW5vdGhlciBzdHJ1Y3QuCiAgICAgbGV0IGNvZGUgPSBgCiAgICAgc3RydWN0IElubmVyIHsKLSAg
ICAgIEBidWlsdGluKHNhbXBsZV9tYXNrKSB2YWx1ZSA6IHUzMjsKKyAgICAgIEBidWlsdGluKHNh
bXBsZV9tYXNrKSB2YWx1ZSA6IHUzMgogICAgIH07CiAgICAgc3RydWN0IE91dGVyIHsKLSAgICAg
IGlubmVyIDogSW5uZXI7CisgICAgICBpbm5lciA6IElubmVyCiAgICAgfTtgOwogCiAgICAgY29k
ZSArPSBnZW5lcmF0ZVNoYWRlcih7CkBAIC0xOTgsMTYgKzE5OCwxNiBAQCBnLnRlc3QoJ2R1cGxp
Y2F0ZXMnKQogICAgICAgdC5wYXJhbXMuc2Vjb25kID09PSAncmInID8gJ0BidWlsdGluKHNhbXBs
ZV9tYXNrKScgOiAnQGxvY2F0aW9uKDIpIEBpbnRlcnBvbGF0ZShmbGF0KSc7CiAgICAgY29uc3Qg
Y29kZSA9IGAKICAgICBzdHJ1Y3QgUzEgewotICAgICAgJHtzMWF9IGEgOiB1MzI7Ci0gICAgICAk
e3MxYn0gYiA6IHUzMjsKKyAgICAgICR7czFhfSBhIDogdTMyLAorICAgICAgJHtzMWJ9IGIgOiB1
MzIsCiAgICAgfTsKICAgICBzdHJ1Y3QgUzIgewotICAgICAgJHtzMmF9IGEgOiB1MzI7Ci0gICAg
ICAke3MyYn0gYiA6IHUzMjsKKyAgICAgICR7czJhfSBhIDogdTMyLAorICAgICAgJHtzMmJ9IGIg
OiB1MzIsCiAgICAgfTsKICAgICBzdHJ1Y3QgUiB7Ci0gICAgICAke3JhfSBhIDogdTMyOwotICAg
ICAgJHtyYn0gYiA6IHUzMjsKKyAgICAgICR7cmF9IGEgOiB1MzIsCisgICAgICAke3JifSBiIDog
dTMyLAogICAgIH07CiAgICAgQHN0YWdlKGZyYWdtZW50KQogICAgIGZuIG1haW4oJHtwMX0gcDEg
OiB1MzIsCkBAIC0yMzgsNyArMjM4LDcgQEAgZy50ZXN0KCdtaXNzaW5nX3ZlcnRleF9wb3NpdGlv
bicpCiAgIC5mbih0ID0+IHsKICAgICBjb25zdCBjb2RlID0gYAogICAgIHN0cnVjdCBTIHsKLSAg
ICAgICR7dC5wYXJhbXMuYXR0cmlidXRlfSB2YWx1ZSA6IHZlYzQ8ZjMyPjsKKyAgICAgICR7dC5w
YXJhbXMuYXR0cmlidXRlfSB2YWx1ZSA6IHZlYzQ8ZjMyPgogICAgIH07CiAKICAgICBAc3RhZ2Uo
dmVydGV4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3NoYWRlci92YWxpZGF0aW9uL3NoYWRlcl9pby9nZW5lcmljLnNwZWMuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL3ZhbGlkYXRpb24vc2hhZGVyX2lvL2dl
bmVyaWMuc3BlYy5qcwppbmRleCBiNGMwNGI1ZTdjNTAuLjA4MGQzNzU1OTE1YSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9u
L3NoYWRlcl9pby9nZW5lcmljLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3NoYWRlcl9pby9nZW5lcmljLnNwZWMuanMK
QEAgLTQ3LDE5ICs0NywxOSBAQCBnLnRlc3QoJ21pc3NpbmdfYXR0cmlidXRlX29uX3BhcmFtX3N0
cnVjdCcpCiAgICAgY29uc3QgY29tcHV0ZV9hdHRyID0gdC5wYXJhbXMudGFyZ2V0X3N0YWdlID09
PSAnY29tcHV0ZScgPyAnJyA6ICdAYnVpbHRpbih3b3JrZ3JvdXBfaWQpJzsKICAgICBjb25zdCBj
b2RlID0gYAogc3RydWN0IFZlcnRleElucHV0cyB7Ci0gIEBsb2NhdGlvbigwKSBhIDogZjMyOwot
ICAke3ZlcnRleF9hdHRyfSAgYiA6IGYzMjsKLUAgIGxvY2F0aW9uKDIpIGMgOiBmMzI7CisgIEBs
b2NhdGlvbigwKSBhIDogZjMyLAorICAke3ZlcnRleF9hdHRyfSAgYiA6IGYzMiwKK0AgIGxvY2F0
aW9uKDIpIGMgOiBmMzIsCiB9Owogc3RydWN0IEZyYWdtZW50SW5wdXRzIHsKLSAgQGxvY2F0aW9u
KDApICBhIDogZjMyOwotICAke2ZyYWdtZW50X2F0dHJ9IGIgOiBmMzI7Ci1AICBsb2NhdGlvbigy
KSAgYyA6IGYzMjsKKyAgQGxvY2F0aW9uKDApICBhIDogZjMyLAorICAke2ZyYWdtZW50X2F0dHJ9
IGIgOiBmMzIsCitAICBsb2NhdGlvbigyKSAgYyA6IGYzMiwKIH07CiBzdHJ1Y3QgQ29tcHV0ZUlu
cHV0cyB7Ci0gIEBidWlsdGluKGdsb2JhbF9pbnZvY2F0aW9uX2lkKSBhIDogdmVjMzx1MzI+Owot
ICAke2NvbXB1dGVfYXR0cn0gICAgICAgICAgICAgICAgICAgYiA6IHZlYzM8dTMyPjsKLSAgQGJ1
aWx0aW4obG9jYWxfaW52b2NhdGlvbl9pZCkgIGMgOiB2ZWMzPHUzMj47CisgIEBidWlsdGluKGds
b2JhbF9pbnZvY2F0aW9uX2lkKSBhIDogdmVjMzx1MzI+LAorICAke2NvbXB1dGVfYXR0cn0gICAg
ICAgICAgICAgICAgICAgYiA6IHZlYzM8dTMyPiwKKyAgQGJ1aWx0aW4obG9jYWxfaW52b2NhdGlv
bl9pZCkgIGMgOiB2ZWMzPHUzMj4sCiB9OwogCiBAc3RhZ2UodmVydGV4KQpAQCAtMTA4LDE0ICsx
MDgsMTQgQEAgZy50ZXN0KCdtaXNzaW5nX2F0dHJpYnV0ZV9vbl9yZXR1cm5fdHlwZV9zdHJ1Y3Qn
KQogICAgIGNvbnN0IGZyYWdtZW50X2F0dHIgPSB0LnBhcmFtcy50YXJnZXRfc3RhZ2UgPT09ICdm
cmFnbWVudCcgPyAnJyA6ICdAbG9jYXRpb24oMSknOwogICAgIGNvbnN0IGNvZGUgPSBgCiBzdHJ1
Y3QgVmVydGV4T3V0cHV0cyB7Ci0gIEBsb2NhdGlvbigwKSAgICAgICBhIDogZjMyOwotICAke3Zl
cnRleF9hdHRyfSAgICAgICAgYiA6IGYzMjsKLSAgQGJ1aWx0aW4ocG9zaXRpb24pIGMgOiB2ZWM0
PGYzMj47CisgIEBsb2NhdGlvbigwKSAgICAgICBhIDogZjMyLAorICAke3ZlcnRleF9hdHRyfSAg
ICAgICAgYiA6IGYzMiwKKyAgQGJ1aWx0aW4ocG9zaXRpb24pIGMgOiB2ZWM0PGYzMj4sCiB9Owog
c3RydWN0IEZyYWdtZW50T3V0cHV0cyB7Ci0gIEBsb2NhdGlvbigwKSAgYSA6IGYzMjsKLSAgJHtm
cmFnbWVudF9hdHRyfSBiIDogZjMyOwotQCAgbG9jYXRpb24oMikgIGMgOiBmMzI7CisgIEBsb2Nh
dGlvbigwKSAgYSA6IGYzMiwKKyAgJHtmcmFnbWVudF9hdHRyfSBiIDogZjMyLAorQCAgbG9jYXRp
b24oMikgIGMgOiBmMzIsCiB9OwogCiBAc3RhZ2UodmVydGV4KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3NoYWRlcl9p
by9pbnZhcmlhbnQuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vaW52YXJpYW50LnNwZWMuanMKaW5kZXggYzEy
ZTg2MDBlYjQzLi5kMTUzNmJlMGZhMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vaW52YXJpYW50LnNw
ZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92
YWxpZGF0aW9uL3NoYWRlcl9pby9pbnZhcmlhbnQuc3BlYy5qcwpAQCAtMzEsOCArMzEsOCBAQCBn
LnRlc3QoJ25vdF92YWxpZF9vbl91c2VyX2RlZmluZWRfaW8nKQogICAgIGNvbnN0IGludmFyaWFu
dCA9IHQucGFyYW1zLnVzZV9pbnZhcmlhbnQgPyAnQGludmFyaWFudCcgOiAnJzsKICAgICBjb25z
dCBjb2RlID0gYAogICAgIHN0cnVjdCBWZXJ0ZXhPdXQgewotICAgICAgQGxvY2F0aW9uKDApICR7
aW52YXJpYW50fSBsb2MwIDogdmVjNDxmMzI+OwotICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBv
c2l0aW9uIDogdmVjNDxmMzI+OworICAgICAgQGxvY2F0aW9uKDApICR7aW52YXJpYW50fSBsb2Mw
IDogdmVjNDxmMzI+LAorICAgICAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0aW9uIDogdmVjNDxm
MzI+LAogICAgIH07CiAgICAgQHN0YWdlKHZlcnRleCkKICAgICBmbiBtYWluKCkgLT4gVmVydGV4
T3V0IHsKQEAgLTQ4LDcgKzQ4LDcgQEAgZy50ZXN0KCdpbnZhbGlkX3VzZV9vZl9wYXJhbWV0ZXJz
JykKICAgLmZuKHQgPT4gewogICAgIGNvbnN0IGNvZGUgPSBgCiAgICAgc3RydWN0IFZlcnRleE91
dCB7Ci0gICAgICBAYnVpbHRpbihwb3NpdGlvbikgQGludmFyaWFudCR7dC5wYXJhbXMuc3VmZml4
fSBwb3NpdGlvbiA6IHZlYzQ8ZjMyPjsKKyAgICAgIEBidWlsdGluKHBvc2l0aW9uKSBAaW52YXJp
YW50JHt0LnBhcmFtcy5zdWZmaXh9IHBvc2l0aW9uIDogdmVjNDxmMzI+CiAgICAgfTsKICAgICBA
c3RhZ2UodmVydGV4KQogICAgIGZuIG1haW4oKSAtPiBWZXJ0ZXhPdXQgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3No
YWRlcl9pby9sb2NhdGlvbnMuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vbG9jYXRpb25zLnNwZWMuanMKaW5k
ZXggZTI1MWZjNjI3MTc1Li4yNGM0YTVhMDI5ZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vbG9jYXRp
b25zLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3No
YWRlci92YWxpZGF0aW9uL3NoYWRlcl9pby9sb2NhdGlvbnMuc3BlYy5qcwpAQCAtNzksNyArNzks
NyBAQCBnLnRlc3QoJ3R5cGUnKQogICAgIGlmICh0LnBhcmFtcy50eXBlID09PSAnTXlTdHJ1Y3Qn
KSB7CiAgICAgICAvLyBHZW5lcmF0ZSBhIHN0cnVjdCB0aGF0IGNvbnRhaW5zIGEgdmFsaWQgdHlw
ZS4KICAgICAgIGNvZGUgKz0gJ3N0cnVjdCBNeVN0cnVjdCB7XG4nOwotICAgICAgY29kZSArPSBg
ICB2YWx1ZSA6IGYzMjtcbmA7CisgICAgICBjb2RlICs9IGAgIHZhbHVlIDogZjMyXG5gOwogICAg
ICAgY29kZSArPSAnfTtcblxuJzsKICAgICB9CiAKQEAgLTEwOCwxMCArMTA4LDEwIEBAIGcudGVz
dCgnbmVzdGluZycpCiAKICAgICAvLyBHZW5lcmF0ZSBhIHN0cnVjdCB0aGF0IGNvbnRhaW5zIGEg
dmFsaWQgdHlwZS4KICAgICBjb2RlICs9ICdzdHJ1Y3QgSW5uZXIge1xuJzsKLSAgICBjb2RlICs9
IGAgIEBsb2NhdGlvbigwKSB2YWx1ZSA6IGYzMjtcbmA7CisgICAgY29kZSArPSBgICBAbG9jYXRp
b24oMCkgdmFsdWUgOiBmMzJcbmA7CiAgICAgY29kZSArPSAnfTtcblxuJzsKICAgICBjb2RlICs9
ICdzdHJ1Y3QgT3V0ZXIge1xuJzsKLSAgICBjb2RlICs9IGAgIGlubmVyIDogSW5uZXI7XG5gOwor
ICAgIGNvZGUgKz0gYCAgaW5uZXIgOiBJbm5lclxuYDsKICAgICBjb2RlICs9ICd9O1xuXG4nOwog
CiAgICAgY29kZSArPSBnZW5lcmF0ZVNoYWRlcih7CkBAIC0xNTEsMTYgKzE1MSwxNiBAQCBnLnRl
c3QoJ2R1cGxpY2F0ZXMnKQogICAgIGNvbnN0IHJiID0gdC5wYXJhbXMuc2Vjb25kID09PSAncmIn
ID8gJzAnIDogJzInOwogICAgIGNvbnN0IGNvZGUgPSBgCiAgICAgc3RydWN0IFMxIHsKLSAgICAg
IEBsb2NhdGlvbigke3MxYX0pIGEgOiBmMzI7Ci0gICAgICBAbG9jYXRpb24oJHtzMWJ9KSBiIDog
ZjMyOworICAgICAgQGxvY2F0aW9uKCR7czFhfSkgYSA6IGYzMiwKKyAgICAgIEBsb2NhdGlvbigk
e3MxYn0pIGIgOiBmMzIsCiAgICAgfTsKICAgICBzdHJ1Y3QgUzIgewotICAgICAgQGxvY2F0aW9u
KCR7czJhfSkgYSA6IGYzMjsKLSAgICAgIEBsb2NhdGlvbigke3MyYn0pIGIgOiBmMzI7CisgICAg
ICBAbG9jYXRpb24oJHtzMmF9KSBhIDogZjMyLAorICAgICAgQGxvY2F0aW9uKCR7czJifSkgYiA6
IGYzMiwKICAgICB9OwogICAgIHN0cnVjdCBSIHsKLSAgICAgIEBsb2NhdGlvbigke3JhfSkgYSA6
IGYzMjsKLSAgICAgIEBsb2NhdGlvbigke3JifSkgYiA6IGYzMjsKKyAgICAgIEBsb2NhdGlvbigk
e3JhfSkgYSA6IGYzMiwKKyAgICAgIEBsb2NhdGlvbigke3JifSkgYiA6IGYzMiwKICAgICB9Owog
ICAgIEBzdGFnZShmcmFnbWVudCkKICAgICBmbiBtYWluKEBsb2NhdGlvbigke3AxfSkgcDEgOiBm
MzIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hh
ZGVyL3ZhbGlkYXRpb24vc2hhZGVyX2lvL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvc2hhZGVyL3ZhbGlkYXRpb24vc2hhZGVyX2lvL3V0aWwuanMKaW5kZXgg
ZjU3YzNhM2U5MjE3Li4zMTI3MWFlYzMzM2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vdXRpbC5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL3ZhbGlkYXRp
b24vc2hhZGVyX2lvL3V0aWwuanMKQEAgLTE2LDEwICsxNiwxMCBAQAogICBpZiAodXNlX3N0cnVj
dCkgewogICAgIC8vIEdlbmVyYXRlIGEgc3RydWN0IHRoYXQgd3JhcHMgdGhlIGVudHJ5IHBvaW50
IElPIHZhcmlhYmxlLgogICAgIGNvZGUgKz0gJ3N0cnVjdCBTIHtcbic7Ci0gICAgY29kZSArPSBg
ICAke2F0dHJpYnV0ZX0gdmFsdWUgOiAke3R5cGV9O1xuYDsKKyAgICBjb2RlICs9IGAgICR7YXR0
cmlidXRlfSB2YWx1ZSA6ICR7dHlwZX0sXG5gOwogICAgIGlmIChzdGFnZSA9PT0gJ3ZlcnRleCcg
JiYgaW8gPT09ICdvdXQnICYmICFhdHRyaWJ1dGUuaW5jbHVkZXMoJ2J1aWx0aW4ocG9zaXRpb24p
JykpIHsKICAgICAgIC8vIEFkZCBwb3NpdGlvbiBidWlsdGluIGZvciB2ZXJ0ZXggb3V0cHV0cy4K
LSAgICAgIGNvZGUgKz0gYCAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0aW9uIDogdmVjNDxmMzI+
O1xuYDsKKyAgICAgIGNvZGUgKz0gYCAgQGJ1aWx0aW4ocG9zaXRpb24pIHBvc2l0aW9uIDogdmVj
NDxmMzI+LFxuYDsKICAgICB9CiAgICAgY29kZSArPSAnfTtcblxuJzsKICAgfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9u
L3Rva2Vucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvc2hhZGVyL3ZhbGlkYXRpb24vdG9rZW5zLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdlZjIyZTlhNDMxYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi90
b2tlbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi90b2tlbnMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRh
dGlvbi90b2tlbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmRjMWFjOGIzOTU0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi90b2tlbnMuaHRtbApAQCAtMCwwICsxLDcg
QEAKKworICAgICAgICAgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9
ICIvd2ViZ3B1L2N0cy5odHRwcy5odG1sP3E9d2ViZ3B1OnNoYWRlcix2YWxpZGF0aW9uLHRva2Vu
czoqIjsKKyAgICAgICAgICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgICAgIApcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi90b2tlbnMuc3BlYy5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi90b2tlbnMuc3BlYy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdiZDE2NmE0NGVhZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9z
aGFkZXIvdmFsaWRhdGlvbi90b2tlbnMuc3BlYy5qcwpAQCAtMCwwICsxLDE4OSBAQAorLyoqCisg
KiBBVVRPLUdFTkVSQVRFRCAtIERPIE5PVCBFRElULiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNv
bS9ncHV3ZWIvY3RzCisgKiovIGV4cG9ydCBjb25zdCBkZXNjcmlwdGlvbiA9IGBWYWxpZGF0aW9u
IHRlc3RzIGZvciB0b2tlbml6YXRpb25gOworaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20g
Jy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7CisKK2ltcG9ydCB7IFNo
YWRlclZhbGlkYXRpb25UZXN0IH0gZnJvbSAnLi9zaGFkZXJfdmFsaWRhdGlvbl90ZXN0LmpzJzsK
KworZXhwb3J0IGNvbnN0IGcgPSBtYWtlVGVzdEdyb3VwKFNoYWRlclZhbGlkYXRpb25UZXN0KTsK
KworZy50ZXN0KCdlbXB0eScpCisgIC5kZXNjKGBUZXN0IHRoYXQgYW4gZW1wdHkgc291cmNlIGZp
bGUgaXMgY29uc3VtZWQgc3VjY2Vzc2Z1bGx5LmApCisgIC5mbih0ID0+IHsKKyAgICB0LmV4cGVj
dENvbXBpbGVSZXN1bHQodHJ1ZSwgJycpOworICB9KTsKKworZy50ZXN0KCdudWxsX2NoYXJhY3Rl
cnMnKQorICAuZGVzYyhgVGVzdCB0aGF0IFdHU0wgc291cmNlIGNvbnRhaW5pbmcgYSBudWxsIGNo
YXJhY3RlciBpcyByZWplY3RlZC5gKQorICAucGFyYW1zKHUgPT4KKyAgICB1CisgICAgICAuY29t
YmluZSgnY29udGFpbnNfbnVsbCcsIFt0cnVlLCBmYWxzZV0pCisgICAgICAuY29tYmluZSgncGxh
Y2VtZW50JywgWydjb21tZW50JywgJ2RlbGltaXRlcicsICdlb2wnXSkKKyAgICAgIC5iZWdpblN1
YmNhc2VzKCkKKyAgKQorICAuZm4odCA9PiB7CisgICAgbGV0IGNvZGUgPSAnJzsKKyAgICBpZiAo
dC5wYXJhbXMucGxhY2VtZW50ID09PSAnY29tbWVudCcpIHsKKyAgICAgIGNvZGUgPSBgLy8gSGVy
ZSBpcyBhICR7dC5wYXJhbXMuY29udGFpbnNfbnVsbCA/ICdcMCcgOiAnWid9IGNoYXJhY3RlcmA7
CisgICAgfSBlbHNlIGlmICh0LnBhcmFtcy5wbGFjZW1lbnQgPT09ICdkZWxpbWl0ZXInKSB7Cisg
ICAgICBjb2RlID0gYGxldCR7dC5wYXJhbXMuY29udGFpbnNfbnVsbCA/ICdcMCcgOiAnICd9bmFt
ZSA6IGkzMiA9IDA7YDsKKyAgICB9IGVsc2UgaWYgKHQucGFyYW1zLnBsYWNlbWVudCA9PT0gJ2Vv
bCcpIHsKKyAgICAgIGNvZGUgPSBgbGV0IG5hbWUgOiBpMzIgPSAwOyR7dC5wYXJhbXMuY29udGFp
bnNfbnVsbCA/ICdcMCcgOiAnJ31gOworICAgIH0KKyAgICB0LmV4cGVjdENvbXBpbGVSZXN1bHQo
IXQucGFyYW1zLmNvbnRhaW5zX251bGwsIGNvZGUpOworICB9KTsKKworZy50ZXN0KCd3aGl0ZXNw
YWNlJykKKyAgLmRlc2MoYFRlc3QgdGhhdCBhbGwgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFjdCBh
cyBkZWxpbWl0ZXJzLmApCisgIC5mbih0ID0+IHsKKyAgICBjb25zdCBjb2RlID0gYAorbGV0IHNw
YWNlOmkzMj0wOworbGV0XHRob3Jpem9udGFsX3RhYjppMzI9MDsKK2xldFxubGluZWZlZWQ6aTMy
PTA7CitsZXRcdnZlcnRpY2FsX3RhYjppMzI9MDsKK2xldFxmZm9ybWZlZWQ6aTMyPTA7CitsZXRc
cmNhcnJpYWdlX3JldHVybjppMzI9MDsKK2A7CisgICAgdC5leHBlY3RDb21waWxlUmVzdWx0KHRy
dWUsIGNvZGUpOworICB9KTsKKworZy50ZXN0KCdjb21tZW50cycpCisgIC5kZXNjKGBUZXN0IHRo
YXQgdmFsaWQgY29tbWVudHMgYXJlIGhhbmRsZWQgY29ycmVjdGx5LCBpbmNsdWRpbmcgbmVzdGlu
Zy5gKQorICAuZm4odCA9PiB7CisgICAgY29uc3QgY29kZSA9IGAKKy8qKgorICogSGVyZSBpcyBt
eSBzaGFkZXIuCisgKgorICogLyogSSBjYW4gbmVzdCAvKiovIGNvbW1lbnRzLiAqLworICogLy8g
SSBjYW4gbmVzdCBsaW5lIGNvbW1lbnRzIHRvby4KKyAqKi8KK0BzdGFnZShmcmFnbWVudCkgLy8g
VGhpcyBpcyB0aGUgc3RhZ2UKK2ZuIG1haW4oLyoKK25vCitwYXJhbWV0ZXJzCisqLykgLT4gQGxv
Y2F0aW9uKDApIHZlYzQ8ZjMyPiB7CisgIHJldHVybi8qYmxvY2tfY29tbWVudHNfZGVsaW1pdF90
b2tlbnMqL3ZlYzQ8ZjMyPiguNCwgLjIsIC4zLCAuMSk7Cit9LyogdGVybWluYXRlZCBibG9jayBj
b21tZW50cyBhcmUgT0sgYXQgRU9GLi4uKi9gOworICAgIHQuZXhwZWN0Q29tcGlsZVJlc3VsdCh0
cnVlLCBjb2RlKTsKKyAgfSk7CisKK2cudGVzdCgnbGluZV9jb21tZW50X3Rlcm1pbmF0b3JzJykK
KyAgLmRlc2MoYFRlc3QgdGhhdCBsaW5lIGNvbW1lbnRzIGFyZSB0ZXJtaW5hdGVkIGJ5IGFueSBi
bGFua3NwYWNlIG90aGVyIHRoYW4gc3BhY2UgYW5kIFx0YCkKKyAgLnBhcmFtcyh1ID0+IHUuY29t
YmluZSgnYmxhbmtzcGFjZScsIFsnICcsICdcdCcsICdcbicsICdcdicsICdcZicsICdcciddKS5i
ZWdpblN1YmNhc2VzKCkpCisgIC5mbih0ID0+IHsKKyAgICBjb25zdCBjb2RlID0gYC8vIExpbmUg
Y29tbWVudCR7dC5wYXJhbXMuYmxhbmtzcGFjZX1sZXQgaW52YWxpZF9vdXRzaWRlX2NvbW1lbnQg
PSBzaG91bGRfZmFpbGA7CisKKyAgICB0LmV4cGVjdENvbXBpbGVSZXN1bHQoWycgJywgJ1x0J10u
aW5jbHVkZXModC5wYXJhbXMuYmxhbmtzcGFjZSksIGNvZGUpOworICB9KTsKKworZy50ZXN0KCd1
bnRlcm1pbmF0ZWRfYmxvY2tfY29tbWVudCcpCisgIC5kZXNjKGBUZXN0IHRoYXQgdW50ZXJtaW5h
dGVkIGJsb2NrIGNvbW1lbnRzIGNhdXNlIGFuIGVycm9yYCkKKyAgLnBhcmFtcyh1ID0+IHUuY29t
YmluZSgndGVybWluYXRlZCcsIFt0cnVlLCBmYWxzZV0pLmJlZ2luU3ViY2FzZXMoKSkKKyAgLmZu
KHQgPT4geworICAgIGNvbnN0IGNvZGUgPSBgCisvKioKKyAqIFVudGVybWluYXRlZCBibG9jayBj
b21tZW50LgorICoKKyAke3QucGFyYW1zLnRlcm1pbmF0ZWQgPyAnKi8nIDogJyd9YDsKKworICAg
IHQuZXhwZWN0Q29tcGlsZVJlc3VsdCh0LnBhcmFtcy50ZXJtaW5hdGVkLCBjb2RlKTsKKyAgfSk7
CisKK2NvbnN0IGtWYWxpZElkZW50aWZpZXJzID0gbmV3IFNldChbJ2ZvbycsICdGb28nLCAnX2Zv
bzAnLCAnXzBmb28nLCAnZm9vX18wJ10pOworY29uc3Qga0ludmFsaWRJZGVudGlmaWVycyA9IG5l
dyBTZXQoWworICAnXycsIC8vIFNpbmdsZSB1bmRlcnNjb3JlIGlzIGEgc3ludGFjdGljIHRva2Vu
IGZvciBwaG9ueSBhc3NpZ25tZW50LgorICAnX19mb28nLCAvLyBMZWFkaW5nIGRvdWJsZSB1bmRl
cnNjb3JlIGlzIHJlc2VydmVkLgorICAnMGZvbycsIC8vIE11c3Qgc3RhcnQgd2l0aCBzaW5nbGUg
dW5kZXJzY29yZSBvciBhIGxldHRlci4KKyAgLy8gTm8gcHVuY3R1YXRpb246CisgICdmb28uYmFy
JywKKyAgJ2Zvby1iYXInLAorICAnZm9vK2JhcicsCisgICdmb28jYmFyJywKKyAgJ2ZvbyFiYXIn
LAorICAnZm9vXFxiYXInLAorICAnZm9vL2JhcicsCisgICdmb28sYmFyJywKKyAgJ2Zvb0BiYXIn
LAorICAnZm9vOjpiYXInLAorICAvLyBLZXl3b3JkczoKKyAgJ2FycmF5JywKKyAgJ2F0b21pYycs
CisgICdiaXRjYXN0JywKKyAgJ2Jvb2wnLAorICAnYnJlYWsnLAorICAnY2FzZScsCisgICdjb250
aW51ZScsCisgICdjb250aW51aW5nJywKKyAgJ2RlZmF1bHQnLAorICAnZGlzY2FyZCcsCisgICdl
bmFibGUnLAorICAnZWxzZScsCisgICdmMzInLAorICAnZmFsbHRocm91Z2gnLAorICAnZmFsc2Un
LAorICAnZm4nLAorICAnZm9yJywKKyAgJ2Z1bmN0aW9uJywKKyAgJ2kzMicsCisgICdpZicsCisg
ICdsZXQnLAorICAnbG9vcCcsCisgICdtYXQyeDInLAorICAnbWF0MngzJywKKyAgJ21hdDJ4NCcs
CisgICdtYXQzeDInLAorICAnbWF0M3gzJywKKyAgJ21hdDN4NCcsCisgICdtYXQ0eDInLAorICAn
bWF0NHgzJywKKyAgJ21hdDR4NCcsCisgICdvdmVycmlkZScsCisgICdwcml2YXRlJywKKyAgJ3B0
cicsCisgICdyZXR1cm4nLAorICAnc2FtcGxlcicsCisgICdzYW1wbGVyX2NvbXBhcmlzb24nLAor
ICAnc3RvcmFnZScsCisgICdzdHJ1Y3QnLAorICAnc3dpdGNoJywKKyAgJ3RleHR1cmVfMWQnLAor
ICAndGV4dHVyZV8yZCcsCisgICd0ZXh0dXJlXzJkX2FycmF5JywKKyAgJ3RleHR1cmVfM2QnLAor
ICAndGV4dHVyZV9jdWJlJywKKyAgJ3RleHR1cmVfY3ViZV9hcnJheScsCisgICd0ZXh0dXJlX2Rl
cHRoXzJkJywKKyAgJ3RleHR1cmVfZGVwdGhfMmRfYXJyYXknLAorICAndGV4dHVyZV9kZXB0aF9j
dWJlJywKKyAgJ3RleHR1cmVfZGVwdGhfY3ViZV9hcnJheScsCisgICd0ZXh0dXJlX2RlcHRoX211
bHRpc2FtcGxlZF8yZCcsCisgICd0ZXh0dXJlX211bHRpc2FtcGxlZF8yZCcsCisgICd0ZXh0dXJl
X3N0b3JhZ2VfMWQnLAorICAndGV4dHVyZV9zdG9yYWdlXzJkJywKKyAgJ3RleHR1cmVfc3RvcmFn
ZV8yZF9hcnJheScsCisgICd0ZXh0dXJlX3N0b3JhZ2VfM2QnLAorICAndHJ1ZScsCisgICd0eXBl
JywKKyAgJ3UzMicsCisgICd1bmlmb3JtJywKKyAgJ3ZhcicsCisgICd2ZWMyJywKKyAgJ3ZlYzMn
LAorICAndmVjNCcsCisgICd3aGlsZScsCisgICd3b3JrZ3JvdXAnLAorXSk7CisKK2cudGVzdCgn
aWRlbnRpZmllcnMnKQorICAuZGVzYygKKyAgICBgVGVzdCB0aGF0IHZhbGlkIGlkZW50aWZpZXJz
IGFyZSBhY2NlcHRlZCwgYW5kIGludmFsaWQgaWRlbnRpZmllcnMgYXJlIHJlamVjdGVkLgorCitU
T0RPOiBBZGQgcmVzZXJ2ZWQgd29yZHMsIHdoZW4gdGhleSd2ZSBiZWVuIHJlZmluZWQuYAorICAp
CisgIC5wYXJhbXModSA9PgorICAgIHUuY29tYmluZSgnaWRlbnQnLCBuZXcgU2V0KFsuLi5rVmFs
aWRJZGVudGlmaWVycywgLi4ua0ludmFsaWRJZGVudGlmaWVyc10pKS5iZWdpblN1YmNhc2VzKCkK
KyAgKQorICAuZm4odCA9PiB7CisgICAgY29uc3QgY29kZSA9IGB2YXI8cHJpdmF0ZT4gJHt0LnBh
cmFtcy5pZGVudH0gOiBpMzI7YDsKKyAgICB0LmV4cGVjdENvbXBpbGVSZXN1bHQoa1ZhbGlkSWRl
bnRpZmllcnMuaGFzKHQucGFyYW1zLmlkZW50KSwgY29kZSk7CisgIH0pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3Zh
cmlhYmxlX2FuZF9jb25zdC5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3ZhcmlhYmxlX2FuZF9jb25zdC5zcGVjLmpzCmluZGV4
IDdmOTM4ZTAwN2QxZC4uMTUwOTc5MTk3YWMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL3ZhbGlkYXRpb24vdmFyaWFibGVfYW5kX2NvbnN0
LnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRl
ci92YWxpZGF0aW9uL3ZhcmlhYmxlX2FuZF9jb25zdC5zcGVjLmpzCkBAIC0xMDYsNyArMTA2LDcg
QEAgZy50ZXN0KCdpb19zaGFyZWFibGVfdHlwZScpCiAgICAgaWYgKGAke3N0b3JhZ2VDbGFzc31g
ID09PSAnaW4nKSB7CiAgICAgICBjb2RlID0gYAogICAgICAgICBzdHJ1Y3QgTXlJbnB1dHMgewot
ICAgICAgICAgIEBsb2NhdGlvbigwKSBAaW50ZXJwb2xhdGUoZmxhdCkgYSA6ICR7dHlwZX07Cisg
ICAgICAgICAgQGxvY2F0aW9uKDApIEBpbnRlcnBvbGF0ZShmbGF0KSBhIDogJHt0eXBlfQogICAg
ICAgICB9OwogCiAgICAgICAgIEBzdGFnZShmcmFnbWVudCkKQEAgLTExNiw3ICsxMTYsNyBAQCBn
LnRlc3QoJ2lvX3NoYXJlYWJsZV90eXBlJykKICAgICB9IGVsc2UgaWYgKGAke3N0b3JhZ2VDbGFz
c31gID09PSAnb3V0JykgewogICAgICAgY29kZSA9IGAKICAgICAgICAgc3RydWN0IE15T3V0cHV0
cyB7Ci0gICAgICAgICAgQGxvY2F0aW9uKDApIGEgOiAke3R5cGV9OworICAgICAgICAgIEBsb2Nh
dGlvbigwKSBhIDogJHt0eXBlfQogICAgICAgICB9OwogCiAgICAgICAgIEBzdGFnZShmcmFnbWVu
dCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGls
L2NoZWNrX2NvbnRlbnRzLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3V0aWwvY2hlY2tfY29udGVudHMuanMKaW5kZXggNzgzMzViMWM0YjM0Li5hMDc4NTRiMjU0ZDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2No
ZWNrX2NvbnRlbnRzLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS91dGlsL2NoZWNrX2NvbnRlbnRzLmpzCkBAIC0xLDYgKzEsMTEgQEAKIC8qKgogICogQVVUTy1H
RU5FUkFURUQgLSBETyBOT1QgRURJVC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2Vi
L2N0cwotICoqLyBpbXBvcnQgeyBhc3NlcnQsIEVycm9yV2l0aEV4dHJhLCBpdGVyUmFuZ2UsIHJh
bmdlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvdXRpbC5qcyc7CisgKiovIC8vIE1BSU5URU5B
TkNFX1RPRE86IFRoZSAiY2hlY2tUaGluZ1RydWUiIG5hbWluZyBpcyBjb25mdXNpbmc7IHRoZXNl
IG11c3QgYmUgdXNlZCB3aXRoIGBleHBlY3RPS2AKKy8vIG9yIHRoZSByZXN1bHQgaXMgZHJvcHBl
ZCBvbiB0aGUgZmxvb3IuIFJlbmFtZSB0aGVzZSB0byB0aGluZ3MgbGlrZSBgdHlwZWRBcnJheUlz
T0tgKD8/KSB0bworLy8gbWFrZSBpdCBjbGVhcmVyLgorLy8gTUFJTlRFTkFOQ0VfVE9ETzogQWxz
bywgYXVkaXQgdG8gbWFrZSBzdXJlIHdlIGFyZW4ndCBkcm9wcGluZyBhbnkgb24gdGhlIGZsb29y
LiBDb25zaWRlciBhCisvLyBuby1pZ25vcmVkLXJldHVybiBsaW50IGNoZWNrIGlmIHdlIGNhbiBm
aW5kIG9uZSB0aGF0IHdlIGNhbiB1c2UuCitpbXBvcnQgeyBhc3NlcnQsIEVycm9yV2l0aEV4dHJh
LCBpdGVyUmFuZ2UsIHJhbmdlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvdXRpbC5qcyc7CiAK
IGltcG9ydCB7IGZsb2F0MTZCaXRzVG9GbG9hdDMyIH0gZnJvbSAnLi9jb252ZXJzaW9uLmpzJzsK
IGltcG9ydCB7IGdlbmVyYXRlUHJldHR5VGFibGUgfSBmcm9tICcuL3ByZXR0eV9kaWZmX3RhYmxl
cy5qcyc7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
dXRpbC9jb2xvcl9zcGFjZV9jb252ZXJzaW9uLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3V0aWwvY29sb3Jfc3BhY2VfY29udmVyc2lvbi5qcwppbmRleCA5MzUzZTQ1
ZGU1OTIuLjhkMjVlYjJkN2FiNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3V0aWwvY29sb3Jfc3BhY2VfY29udmVyc2lvbi5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb2xvcl9zcGFjZV9jb252ZXJzaW9u
LmpzCkBAIC0xLDEwICsxLDE1IEBACiAvKioKICAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9UIEVE
SVQuIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9jdHMKLSAqKi8gaW1wb3J0IHsg
YXNzZXJ0IH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvdXRpbC5qcyc7CisgKiovIGltcG9ydCB7
IGFzc2VydCwgdW5yZWFjaGFibGUgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsK
IGltcG9ydCB7IG11bHRpcGx5TWF0cmljZXMgfSBmcm9tICcuL21hdGguanMnOwogCiAvLyBUaGVz
ZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGRlZmluaXRpb25zIGFyZSBjb3BpZWQg
ZGlyZWN0bHkgZnJvbQogLy8gQ1NTIENvbG9yIE1vZHVsZSBMZXZlbCA0IFNhbXBsZSBDb2RlOiBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWNvbG9yLyNjb2xvci1jb252ZXJzaW9uLWNvZGUK
Ky8vICpFWENFUFQqIHRoZSBjb252ZXJzaW9uIG1hdHJpY2VzIGFyZSByZXBsYWNlZCB3aXRoIGV4
YWN0IHJhdGlvbmFsIGZvcm1zIGNvbXB1dGVkIGhlcmU6CisvLyBodHRwczovL2dpdGh1Yi5jb20v
a2FpbmlubzB4L2V4YWN0X2Nzc194eXpfbWF0cmljZXMKKy8vICAgdXNpbmcgdGhpcyBSdXN0IGNy
YXRlOiBodHRwczovL2NyYXRlcy5pby9jcmF0ZXMvcmdiX2Rlcml2YXRpb24KKy8vICAgYXMgZGVz
Y3JpYmVkIGZvciBzUkdCIG9uIHRoaXMgcGFnZTogaHR0cHM6Ly9taW5hODYuY29tLzIwMTkvc3Jn
Yi14eXotbWF0cml4LworLy8gICBidXQgdXNpbmcgdGhlIG51bWJlcnMgZnJvbSB0aGUgQ1NTIHNw
ZWM6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtY29sb3ItNC8jcHJlZGVmaW5lZAogCiAvLyBT
YW1wbGUgY29kZSBmb3IgY29sb3IgY29udmVyc2lvbnMKIC8vIENvbnZlcnNpb24gY2FuIGFsc28g
YmUgZG9uZSB1c2luZyBJQ0MgcHJvZmlsZXMgYW5kIGEgQ29sb3IgTWFuYWdlbWVudCBTeXN0ZW0K
QEAgLTYxLDkgKzY2LDkgQEAgZnVuY3Rpb24gZ2FtX3NSR0IoUkdCKSB7CiAgKi8KIGZ1bmN0aW9u
IGxpbl9zUkdCX3RvX1hZWihyZ2IpIHsKICAgY29uc3QgTSA9IFsKLSAgICBbMC40MTIzOTA3OTky
NjU5NTkzNCwgMC4zNTc1ODQzMzkzODM4NzgsIDAuMTgwNDgwNzg4NDAxODM0M10sCi0gICAgWzAu
MjEyNjM5MDA1ODcxNTEwMjcsIDAuNzE1MTY4Njc4NzY3NzU2LCAwLjA3MjE5MjMxNTM2MDczMzcx
XSwKLSAgICBbMC4wMTkzMzA4MTg3MTU1OTE4MiwgMC4xMTkxOTQ3Nzk3OTQ2MjU5OCwgMC45NTA1
MzIxNTIyNDk2NjA3XSwKKyAgICBbNTA2NzUyIC8gMTIyODgxNSwgODc4ODEgLyAyNDU3NjMsIDEy
NjczIC8gNzAyMThdLAorICAgIFs4NzA5OCAvIDQwOTYwNSwgMTc1NzYyIC8gMjQ1NzYzLCAxMjY3
MyAvIDE3NTU0NV0sCisgICAgWzc5MTggLyA0MDk2MDUsIDg3ODgxIC8gNzM3Mjg5LCAxMDAxMTY3
IC8gMTA1MzI3MF0sCiAgIF07CiAKICAgcmV0dXJuIG11bHRpcGx5TWF0cmljZXMoTSwgcmdiKTsK
QEAgLTc1LDkgKzgwLDkgQEAgZnVuY3Rpb24gbGluX3NSR0JfdG9fWFlaKHJnYikgewogICovCiBm
dW5jdGlvbiBYWVpfdG9fbGluX3NSR0IoWFlaKSB7CiAgIGNvbnN0IE0gPSBbCi0gICAgWzMuMjQw
OTY5OTQxOTA0NTIyNiwgLTEuNTM3MzgzMTc3NTcwMDk0LCAtMC40OTg2MTA3NjAyOTMwMDM0XSwK
LSAgICBbLTAuOTY5MjQzNjM2MjgwODc5NiwgMS44NzU5Njc1MDE1MDc3MjAyLCAwLjA0MTU1NTA1
NzQwNzE3NTU5XSwKLSAgICBbMC4wNTU2MzAwNzk2OTY5OTM2NiwgLTAuMjAzOTc2OTU4ODg4OTc2
NTIsIDEuMDU2OTcxNTE0MjQyODc4Nl0sCisgICAgWzEyODMxIC8gMzk1OSwgLTMyOSAvIDIxNCwg
LTE5NzQgLyAzOTU5XSwKKyAgICBbLTg1MTc4MSAvIDg3ODgxMCwgMTY0ODYxOSAvIDg3ODgxMCwg
MzY1MTkgLyA4Nzg4MTBdLAorICAgIFs3MDUgLyAxMjY3MywgLTI1ODUgLyAxMjY3MywgNzA1IC8g
NjY3XSwKICAgXTsKIAogICByZXR1cm4gbXVsdGlwbHlNYXRyaWNlcyhNLCBYWVopOwpAQCAtMTA0
LDE3ICsxMDksMTQgQEAgZnVuY3Rpb24gZ2FtX1AzKFJHQikgewogLyoqCiAgKiBjb252ZXJ0IGFu
IGFycmF5IG9mIGxpbmVhci1saWdodCBkaXNwbGF5LXAzIHZhbHVlcyB0byBDSUUgWFlaCiAgKiB1
c2luZyBkaXNwbGF5LXAzJ3MgRDY1IChubyBjaHJvbWF0aWMgYWRhcHRhdGlvbikKLSAqIGh0dHA6
Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tL2luZGV4Lmh0bWw/RXFuX1JHQl9YWVpfTWF0cml4Lmh0
bWwKICAqLwogZnVuY3Rpb24gbGluX1AzX3RvX1hZWihyZ2IpIHsKICAgY29uc3QgTSA9IFsKLSAg
ICBbMC40ODY1NzA5NDg2NDgyMTYyLCAwLjI2NTY2NzY5MzE2OTA5MzA2LCAwLjE5ODIxNzI4NTIz
NDM2MjVdLAotICAgIFswLjIyODk3NDU2NDA2OTc0ODgsIDAuNjkxNzM4NTIxODM2NTA2NCwgMC4w
NzkyODY5MTQwOTM3NDVdLAotICAgIFswLjAsIDAuMDQ1MTEzMzgxODU4OTAyNjQsIDEuMDQzOTQ0
MzY4OTAwOTc2XSwKKyAgICBbNjA4MzExIC8gMTI1MDIwMCwgMTg5NzkzIC8gNzE0NDAwLCAxOTgy
NDkgLyAxMDAwMTYwXSwKKyAgICBbMzU3ODMgLyAxNTYyNzUsIDI0NzA4OSAvIDM1NzIwMCwgMTk4
MjQ5IC8gMjUwMDQwMF0sCisgICAgWzAgLyAxLCAzMjIyOSAvIDcxNDQwMCwgNTIyMDU1NyAvIDUw
MDA4MDBdLAogICBdOwogCi0gIC8vIDAgd2FzIGNvbXB1dGVkIGFzIC0zLjk3MjA3NTUxNjkzMzQ4
OGUtMTcKLQogICByZXR1cm4gbXVsdGlwbHlNYXRyaWNlcyhNLCByZ2IpOwogfQogCkBAIC0xMjQs
OSArMTI2LDkgQEAgZnVuY3Rpb24gbGluX1AzX3RvX1hZWihyZ2IpIHsKICAqLwogZnVuY3Rpb24g
WFlaX3RvX2xpbl9QMyhYWVopIHsKICAgY29uc3QgTSA9IFsKLSAgICBbMi40OTM0OTY5MTE5NDE0
MjUsIC0wLjkzMTM4MzYxNzkxOTEyMzksIC0wLjQwMjcxMDc4NDQ1MDcxNjg0XSwKLSAgICBbLTAu
ODI5NDg4OTY5NTYxNTc0NywgMS43NjI2NjQwNjAzMTgzNDYzLCAwLjAyMzYyNDY4NTg0MTk0MzU3
N10sCi0gICAgWzAuMDM1ODQ1ODMwMjQzNzg0NDcsIC0wLjA3NjE3MjM4OTI2ODA0MTgyLCAwLjk1
Njg4NDUyNDAwNzY4NzJdLAorICAgIFs0NDYxMjQgLyAxNzg5MTUsIC0zMzMyNzcgLyAzNTc4MzAs
IC03MjA1MSAvIDE3ODkxNV0sCisgICAgWy0xNDg1MiAvIDE3OTA1LCA2MzEyMSAvIDM1ODEwLCA0
MjMgLyAxNzkwNV0sCisgICAgWzExODQ0IC8gMzMwNDE1LCAtNTAzMzcgLyA2NjA4MzAsIDMxNjE2
OSAvIDMzMDQxNV0sCiAgIF07CiAKICAgcmV0dXJuIG11bHRpcGx5TWF0cmljZXMoTSwgWFlaKTsK
QEAgLTE4NCwzICsxODYsNTYgQEAgZXhwb3J0IGZ1bmN0aW9uIHNyZ2JUb0Rpc3BsYXlQMyhwaXhl
bCkgewogCiAgIHJldHVybiBwaXhlbDsKIH0KKworLyoqCisgKiBSZXR1cm5zIGEgZnVuY3Rpb24g
d2hpY2ggYXBwbGllcyB0aGUgc3BlY2lmaWVkIGNvbG9yc3BhY2UvcHJlbXVsdGlwbGljYXRpb24g
Y29udmVyc2lvbi4KKyAqIERvZXMgbm90IGNsYW1wLCBzbyBtYXkgcmV0dXJuIHZhbHVlcyBvdXRz
aWRlIG9mIHRoZSBgZHN0Q29sb3JTcGFjZWAgZ2FtdXQsIGR1ZSB0byBlaXRoZXIKKyAqIGNvbG9y
IHNwYWNlIGNvbnZlcnNpb24gb3IgYWxwaGEgcHJlbXVsdGlwbGljYXRpb24uCisgKi8KK2V4cG9y
dCBmdW5jdGlvbiBtYWtlSW5QbGFjZUNvbG9yQ29udmVyc2lvbih7CisgIHNyY1ByZW11bHRpcGxp
ZWQsCisgIGRzdFByZW11bHRpcGxpZWQsCisgIHNyY0NvbG9yU3BhY2UgPSAnc3JnYicsCisgIGRz
dENvbG9yU3BhY2UgPSAnc3JnYicsCit9KSB7CisgIGNvbnN0IHJlcXVpcmVDb2xvclNwYWNlQ29u
dmVyc2lvbiA9IHNyY0NvbG9yU3BhY2UgIT09IGRzdENvbG9yU3BhY2U7CisgIGNvbnN0IHJlcXVp
cmVVbnByZW11bHRpcGx5QWxwaGEgPQorICAgIHNyY1ByZW11bHRpcGxpZWQgJiYgKHJlcXVpcmVD
b2xvclNwYWNlQ29udmVyc2lvbiB8fCBzcmNQcmVtdWx0aXBsaWVkICE9PSBkc3RQcmVtdWx0aXBs
aWVkKTsKKyAgY29uc3QgcmVxdWlyZVByZW11bHRpcGx5QWxwaGEgPQorICAgIGRzdFByZW11bHRp
cGxpZWQgJiYgKHJlcXVpcmVDb2xvclNwYWNlQ29udmVyc2lvbiB8fCBzcmNQcmVtdWx0aXBsaWVk
ICE9PSBkc3RQcmVtdWx0aXBsaWVkKTsKKworICByZXR1cm4gcmdiYSA9PiB7CisgICAgYXNzZXJ0
KHJnYmEuQSA+PSAwLjAgJiYgcmdiYS5BIDw9IDEuMCwgJ3JnYmEuQSBvdXQgb2YgYm91bmRzJyk7
CisKKyAgICBpZiAocmVxdWlyZVVucHJlbXVsdGlwbHlBbHBoYSkgeworICAgICAgaWYgKHJnYmEu
QSAhPT0gMC4wKSB7CisgICAgICAgIHJnYmEuUiAvPSByZ2JhLkE7CisgICAgICAgIHJnYmEuRyAv
PSByZ2JhLkE7CisgICAgICAgIHJnYmEuQiAvPSByZ2JhLkE7CisgICAgICB9IGVsc2UgeworICAg
ICAgICBhc3NlcnQoCisgICAgICAgICAgcmdiYS5SID09PSAwLjAgJiYgcmdiYS5HID09PSAwLjAg
JiYgcmdiYS5CID09PSAwLjAgJiYgcmdiYS5BID09PSAwLjAsCisgICAgICAgICAgJ1VucHJlbXVs
dGlwbHkgb3BzIHdpdGggYWxwaGEgdmFsdWUgMC4wIHJlcXVpcmVzIGFsbCBjaGFubmVscyBlcXVh
bHMgdG8gMC4wJworICAgICAgICApOworICAgICAgfQorICAgIH0KKyAgICAvLyBJdCdzIHBvc3Np
YmxlIFJHQiBhcmUgbm93ID4gMS4KKyAgICAvLyBUaGlzIHRlY2huaWNhbGx5IHJlcHJlc2VudHMg
Y29sb3JzIG91dHNpZGUgdGhlIHNyYyBnYW11dCwgc28gbm8gY2xhbXBpbmcgeWV0LgorCisgICAg
aWYgKHJlcXVpcmVDb2xvclNwYWNlQ29udmVyc2lvbikgeworICAgICAgLy8gV2ViR1BVIGN1cnJl
bnRseSBvbmx5IHN1cHBvcnRzIGRzdENvbG9yU3BhY2UgPSAnc3JnYicuCisgICAgICBpZiAoc3Jj
Q29sb3JTcGFjZSA9PT0gJ2Rpc3BsYXktcDMnICYmIGRzdENvbG9yU3BhY2UgPT09ICdzcmdiJykg
eworICAgICAgICByZ2JhID0gZGlzcGxheVAzVG9TcmdiKHJnYmEpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgdW5yZWFjaGFibGUoKTsKKyAgICAgIH0KKyAgICB9CisgICAgLy8gTm93IFJHQiBt
YXkgYWxzbyBiZSBuZWdhdGl2ZSBpZiB0aGUgc3JjIGdhbXV0IGlzIGxhcmdlciB0aGFuIHRoZSBk
c3QgZ2FtdXQuCisKKyAgICBpZiAocmVxdWlyZVByZW11bHRpcGx5QWxwaGEpIHsKKyAgICAgIHJn
YmEuUiAqPSByZ2JhLkE7CisgICAgICByZ2JhLkcgKj0gcmdiYS5BOworICAgICAgcmdiYS5CICo9
IHJnYmEuQTsKKyAgICB9CisgIH07Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb21tYW5kX2J1ZmZlcl9tYWtlci5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2NvbW1hbmRfYnVmZmVyX21ha2VyLmpz
CmluZGV4IDBlYTM0MzQwNGUxMC4uYjNlMDQ2M2ZiMmZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb21tYW5kX2J1ZmZlcl9tYWtlci5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb21tYW5kX2J1
ZmZlcl9tYWtlci5qcwpAQCAtMTIsNiArMTIsMTEgQEAgZXhwb3J0IGNsYXNzIENvbW1hbmRCdWZm
ZXJNYWtlciB7CiAgIC8qKiBgR1BVX19fRW5jb2RlcmAgZm9yIHJlY29yZGluZyBjb21tYW5kcyBp
bnRvLiAqLwogICAvLyBMb29rIHVwIHRoZSB0eXBlIG9mIHRoZSBlbmNvZGVyIGJhc2VkIG9uIGBU
YC4gSWYgYFRgIGlzIGEgdW5pb24sIHRoaXMgd2lsbCBiZSB0b28hCiAKKyAgLyoqCisgICAqIEZp
bmlzaCBhbnkgcGFzc2VzLCBmaW5pc2ggYW5kIHJlY29yZCBhbnkgYnVuZGxlcywgYW5kIGZpbmlz
aC9yZXR1cm4gdGhlIGNvbW1hbmQgYnVmZmVyLiBBbnkKKyAgICogZXJyb3JzIGFyZSBpZ25vcmVk
IGFuZCB0aGUgR1BVQ29tbWFuZEJ1ZmZlciAod2hpY2ggbWF5IGJlIGFuIGVycm9yIGJ1ZmZlcikg
aXMgcmV0dXJuZWQuCisgICAqLworCiAgIC8qKgogICAgKiBGaW5pc2ggYW55IHBhc3NlcywgZmlu
aXNoIGFuZCByZWNvcmQgYW55IGJ1bmRsZXMsIGFuZCBmaW5pc2gvcmV0dXJuIHRoZSBjb21tYW5k
IGJ1ZmZlci4KICAgICogQ2hlY2tzIGZvciB2YWxpZGF0aW9uIGVycm9ycyBpbiAob25seSkgdGhl
IGFwcHJvcHJpYXRlIGZpbmlzaCBjYWxsLgpAQCAtMzEsMTMgKzM2LDE5IEBAIGV4cG9ydCBjbGFz
cyBDb21tYW5kQnVmZmVyTWFrZXIgewogICBjb25zdHJ1Y3Rvcih0LCBlbmNvZGVyLCBmaW5pc2gp
IHsKICAgICAvLyBUeXBlU2NyaXB0IGludHJvZHVjZXMgYW4gaW50ZXJzZWN0aW9uIHR5cGUgaGVy
ZSB3aGVyZSB3ZSBkb24ndCB3YW50IG9uZS4KICAgICB0aGlzLmVuY29kZXIgPSBlbmNvZGVyOwot
ICAgIHRoaXMudmFsaWRhdGVGaW5pc2ggPSBmaW5pc2g7CisgICAgdGhpcy5maW5pc2ggPSBmaW5p
c2g7CiAKICAgICAvLyBEZWZpbmUgZXh0cmEgbWV0aG9kcyBsaWtlIHRoaXMsIG90aGVyd2lzZSB0
aGV5IGdldCB1bmJvdW5kIHdoZW4gZGVzdHJ1Y3R1cmVkLCBlLmcuOgotICAgIC8vIGNvbnN0IHsg
ZW5jb2RlciwgdmFsaWRhdGVGaW5pc2hBbmRTdWJtaXQgfSA9IHQuY3JlYXRlRW5jb2Rlcih0eXBl
KTsKKyAgICAvLyAgIGNvbnN0IHsgZW5jb2RlciwgdmFsaWRhdGVGaW5pc2hBbmRTdWJtaXQgfSA9
IHQuY3JlYXRlRW5jb2Rlcih0eXBlKTsKKyAgICAvLyBBbHRlcm5hdGl2ZWx5LCBkbyBub3QgZGVz
dHJ1Y3R1cmUsIGFuZCBjYWxsIG1lbWJlciBmdW5jdGlvbnMsIGUuZy46CisgICAgLy8gICBjb25z
dCBlbmNvZGVyID0gdC5jcmVhdGVFbmNvZGVyKHR5cGUpOworICAgIC8vICAgZW5jb2Rlci52YWxp
ZGF0ZUZpbmlzaCh0cnVlKTsKKyAgICB0aGlzLnZhbGlkYXRlRmluaXNoID0gc2hvdWxkU3VjY2Vl
ZCA9PiB7CisgICAgICByZXR1cm4gdC5leHBlY3RHUFVFcnJvcigndmFsaWRhdGlvbicsIHRoaXMu
ZmluaXNoLCAhc2hvdWxkU3VjY2VlZCk7CisgICAgfTsKIAogICAgIHRoaXMudmFsaWRhdGVGaW5p
c2hBbmRTdWJtaXQgPSAoc2hvdWxkQmVWYWxpZCwgc3VibWl0U2hvdWxkU3VjY2VlZElmVmFsaWQp
ID0+IHsKLSAgICAgIGNvbnN0IGNvbW1hbmRCdWZmZXIgPSBmaW5pc2goc2hvdWxkQmVWYWxpZCk7
CisgICAgICBjb25zdCBjb21tYW5kQnVmZmVyID0gdGhpcy52YWxpZGF0ZUZpbmlzaChzaG91bGRC
ZVZhbGlkKTsKICAgICAgIGlmIChzaG91bGRCZVZhbGlkKSB7CiAgICAgICAgIHQuZXhwZWN0VmFs
aWRhdGlvbkVycm9yKCgpID0+IHQucXVldWUuc3VibWl0KFtjb21tYW5kQnVmZmVyXSksICFzdWJt
aXRTaG91bGRTdWNjZWVkSWZWYWxpZCk7CiAgICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb252ZXJzaW9uLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvY29udmVyc2lvbi5qcwppbmRleCA1NDgy
NGExZGVhNjIuLjNhMjEwZDkxM2UyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3V0aWwvY29udmVyc2lvbi5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb252ZXJzaW9uLmpzCkBAIC0xMCwxMSArMTAsMTEg
QEAgaW1wb3J0IHsgY2xhbXAgfSBmcm9tICcuL21hdGguanMnOwogICovCiBleHBvcnQgZnVuY3Rp
b24gZmxvYXRBc05vcm1hbGl6ZWRJbnRlZ2VyKGZsb2F0LCBiaXRzLCBzaWduZWQpIHsKICAgaWYg
KHNpZ25lZCkgewotICAgIGFzc2VydChmbG9hdCA+PSAtMSAmJiBmbG9hdCA8PSAxKTsKKyAgICBh
c3NlcnQoZmxvYXQgPj0gLTEgJiYgZmxvYXQgPD0gMSwgKCkgPT4gYCR7ZmxvYXR9IG91dCBvZiBi
b3VuZHMgb2Ygc25vcm1gKTsKICAgICBjb25zdCBtYXggPSBNYXRoLnBvdygyLCBiaXRzIC0gMSkg
LSAxOwogICAgIHJldHVybiBNYXRoLnJvdW5kKGZsb2F0ICogbWF4KTsKICAgfSBlbHNlIHsKLSAg
ICBhc3NlcnQoZmxvYXQgPj0gMCAmJiBmbG9hdCA8PSAxKTsKKyAgICBhc3NlcnQoZmxvYXQgPj0g
MCAmJiBmbG9hdCA8PSAxLCAoKSA9PiBgJHtmbG9hdH0gb3V0IG9mIGJvdW5kcyBvZiB1bm9ybWAp
OwogICAgIGNvbnN0IG1heCA9IE1hdGgucG93KDIsIGJpdHMpIC0gMTsKICAgICByZXR1cm4gTWF0
aC5yb3VuZChmbG9hdCAqIG1heCk7CiAgIH0KQEAgLTQ1LDcgKzQ1LDEwIEBAIGV4cG9ydCBmdW5j
dGlvbiBub3JtYWxpemVkSW50ZWdlckFzRmxvYXQoaW50ZWdlciwgYml0cywgc2lnbmVkKSB7CiAg
KiBzaWduLCBleHBvbmVudCwgbWFudGlzc2EgYml0cywgYW5kIGV4cG9uZW50IGJpYXMuCiAgKiBS
ZXR1cm5zIHRoZSByZXN1bHQgYXMgYW4gaW50ZWdlci12YWx1ZWQgSlMgYG51bWJlcmAuCiAgKgot
ICogRG9lcyBub3QgaGFuZGxlIGNsYW1waW5nLCB1bmRlcmZsb3csIG92ZXJmbG93LCBvciBkZW5v
cm1hbGl6ZWQgbnVtYmVycy4KKyAqIERvZXMgbm90IGhhbmRsZSBjbGFtcGluZywgb3ZlcmZsb3cs
IG9yIGRlbm9ybWFsIGlucHV0cy4KKyAqIE9uIHVuZGVyZmxvdyAocmVzdWx0IGlzIHN1Ym5vcm1h
bCksIHJvdW5kcyB0byAoc2lnbmVkKSB6ZXJvLgorICoKKyAqIE1BSU5URU5BTkNFX1RPRE86IFJl
cGxhY2UgdXNhZ2VzIG9mIHRoaXMgd2l0aCBudW1iZXJUb0Zsb2F0Qml0cy4KICAqLwogZXhwb3J0
IGZ1bmN0aW9uIGZsb2F0MzJUb0Zsb2F0Qml0cyhuLCBzaWduQml0cywgZXhwb25lbnRCaXRzLCBt
YW50aXNzYUJpdHMsIGJpYXMpIHsKICAgYXNzZXJ0KGV4cG9uZW50Qml0cyA8PSA4KTsKQEAgLTc1
LDE4ICs3OCwyNCBAQCBleHBvcnQgZnVuY3Rpb24gZmxvYXQzMlRvRmxvYXRCaXRzKG4sIHNpZ25C
aXRzLCBleHBvbmVudEJpdHMsIG1hbnRpc3NhQml0cywgYmlhcwogCiAgIC8vIENvbnZlcnQgdG8g
dGhlIG5ldyBiaWFzZWQgZXhwb25lbnQuCiAgIGNvbnN0IG5ld0JpYXNlZEV4cCA9IGJpYXMgKyBl
eHA7Ci0gIGFzc2VydChuZXdCaWFzZWRFeHAgPj0gMCAmJiBuZXdCaWFzZWRFeHAgPCAxIDw8IGV4
cG9uZW50Qml0cyk7CisgIGFzc2VydChuZXdCaWFzZWRFeHAgPCAxIDw8IGV4cG9uZW50Qml0cywg
KCkgPT4gYGlucHV0IG51bWJlciAke259IG92ZXJmbG93cyB0YXJnZXQgdHlwZWApOwogCi0gIC8v
IE1hc2sgb25seSB0aGUgbWFudGlzc2EsIGFuZCBkaXNjYXJkIHRoZSBsb3dlciBiaXRzLgotICBj
b25zdCBuZXdNYW50aXNzYSA9IChiaXRzICYgMHg3ZmZmZmYpID4+IG1hbnRpc3NhQml0c1RvRGlz
Y2FyZDsKLSAgcmV0dXJuIChzaWduIDw8IChleHBvbmVudEJpdHMgKyBtYW50aXNzYUJpdHMpKSB8
IChuZXdCaWFzZWRFeHAgPDwgbWFudGlzc2FCaXRzKSB8IG5ld01hbnRpc3NhOworICBpZiAobmV3
Qmlhc2VkRXhwIDw9IDApIHsKKyAgICAvLyBSZXN1bHQgaXMgc3Vibm9ybWFsIG9yIHplcm8uIFJv
dW5kIHRvIChzaWduZWQpIHplcm8uCisgICAgcmV0dXJuIHNpZ24gPDwgKGV4cG9uZW50Qml0cyAr
IG1hbnRpc3NhQml0cyk7CisgIH0gZWxzZSB7CisgICAgLy8gTWFzayBvbmx5IHRoZSBtYW50aXNz
YSwgYW5kIGRpc2NhcmQgdGhlIGxvd2VyIGJpdHMuCisgICAgY29uc3QgbmV3TWFudGlzc2EgPSAo
Yml0cyAmIDB4N2ZmZmZmKSA+PiBtYW50aXNzYUJpdHNUb0Rpc2NhcmQ7CisgICAgcmV0dXJuIChz
aWduIDw8IChleHBvbmVudEJpdHMgKyBtYW50aXNzYUJpdHMpKSB8IChuZXdCaWFzZWRFeHAgPDwg
bWFudGlzc2FCaXRzKSB8IG5ld01hbnRpc3NhOworICB9CiB9CiAKIC8qKgogICogRW5jb2RlcyBh
IEpTIGBudW1iZXJgIGludG8gYW4gSUVFRTc1NCAxNiBiaXQgZmxvYXRpbmcgcG9pbnQgbnVtYmVy
LgogICogUmV0dXJucyB0aGUgcmVzdWx0IGFzIGFuIGludGVnZXItdmFsdWVkIEpTIGBudW1iZXJg
LgogICoKLSAqIERvZXMgbm90IGhhbmRsZSBjbGFtcGluZywgdW5kZXJmbG93LCBvdmVyZmxvdywg
b3IgZGVub3JtYWxpemVkIG51bWJlcnMuCisgKiBEb2VzIG5vdCBoYW5kbGUgY2xhbXBpbmcsIG92
ZXJmbG93LCBvciBkZW5vcm1hbCBpbnB1dHMuCisgKiBPbiB1bmRlcmZsb3cgKHJlc3VsdCBpcyBz
dWJub3JtYWwpLCByb3VuZHMgdG8gKHNpZ25lZCkgemVyby4KICAqLwogZXhwb3J0IGZ1bmN0aW9u
IGZsb2F0MzJUb0Zsb2F0MTZCaXRzKG4pIHsKICAgcmV0dXJuIGZsb2F0MzJUb0Zsb2F0Qml0cyhu
LCAxLCA1LCAxMCwgMTUpOwpAQCAtMTM5LDYgKzE0OCwxNyBAQCBleHBvcnQgZnVuY3Rpb24gZmxv
YXRCaXRzVG9OdW1iZXIoYml0cywgZm10KSB7CiAgIHJldHVybiBudW1iZXJXaXRoV3JvbmdCaWFz
ICogMiAqKiAoa0Zsb2F0MzJGb3JtYXQuYmlhcyAtIGZtdC5iaWFzKTsKIH0KIAorLyoqCisgKiBF
bmNvZGVzIGEgSlMgYG51bWJlcmAgaW50byBhbiBJRUVFNzU0IGZsb2F0aW5nIHBvaW50IG51bWJl
ciB3aXRoIHRoZSBzcGVjaWZpZWQgZm9ybWF0LgorICogUmV0dXJucyB0aGUgcmVzdWx0IGFzIGFu
IGludGVnZXItdmFsdWVkIEpTIGBudW1iZXJgLgorICoKKyAqIERvZXMgbm90IGhhbmRsZSBjbGFt
cGluZywgb3ZlcmZsb3csIG9yIGRlbm9ybWFsIGlucHV0cy4KKyAqIE9uIHVuZGVyZmxvdyAocmVz
dWx0IGlzIHN1Ym5vcm1hbCksIHJvdW5kcyB0byAoc2lnbmVkKSB6ZXJvLgorICovCitleHBvcnQg
ZnVuY3Rpb24gbnVtYmVyVG9GbG9hdEJpdHMobnVtYmVyLCBmbXQpIHsKKyAgcmV0dXJuIGZsb2F0
MzJUb0Zsb2F0Qml0cyhudW1iZXIsIGZtdC5zaWduZWQsIGZtdC5leHBvbmVudEJpdHMsIGZtdC5t
YW50aXNzYUJpdHMsIGZtdC5iaWFzKTsKK30KKwogLyoqCiAgKiBHaXZlbiBhIGZsb2F0aW5nIHBv
aW50IG51bWJlciAoYXMgYW4gaW50ZWdlciByZXByZXNlbnRpbmcgaXRzIGJpdHMpLCBjb21wdXRl
cyBob3cgbWFueSBVTFBzIGl0IGlzCiAgKiBmcm9tIHplcm8uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb3B5X3RvX3RleHR1cmUuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb3B5X3RvX3RleHR1cmUu
anMKaW5kZXggYjRmYzY0NGZlODhlLi40NGRmNGQzODJlZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2NvcHlfdG9fdGV4dHVyZS5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC9jb3B5X3RvX3RleHR1
cmUuanMKQEAgLTEsNTEgKzEsMTEgQEAKIC8qKgogICogQVVUTy1HRU5FUkFURUQgLSBETyBOT1Qg
RURJVC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cwotICoqLyBpbXBvcnQg
eyBhc3NlcnQsIG1lbWNweSwgdW5yZWFjaGFibGUgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC91
dGlsLmpzJzsKLWltcG9ydCB7IGtUZXh0dXJlRm9ybWF0SW5mbyB9IGZyb20gJy4uL2NhcGFiaWxp
dHlfaW5mby5qcyc7CisgKiovIGltcG9ydCB7IGFzc2VydCwgbWVtY3B5IH0gZnJvbSAnLi4vLi4v
Y29tbW9uL3V0aWwvdXRpbC5qcyc7CiBpbXBvcnQgeyBHUFVUZXN0IH0gZnJvbSAnLi4vZ3B1X3Rl
c3QuanMnOwogCi1pbXBvcnQgeyBjaGVja0VsZW1lbnRzRXF1YWwsIGNoZWNrRWxlbWVudHNCZXR3
ZWVuIH0gZnJvbSAnLi9jaGVja19jb250ZW50cy5qcyc7Ci1pbXBvcnQgeyBkaXNwbGF5UDNUb1Ny
Z2IgfSBmcm9tICcuL2NvbG9yX3NwYWNlX2NvbnZlcnNpb24uanMnOwotaW1wb3J0IHsgYWxpZ24g
fSBmcm9tICcuL21hdGguanMnOwotaW1wb3J0IHsga0J5dGVzUGVyUm93QWxpZ25tZW50IH0gZnJv
bSAnLi90ZXh0dXJlL2xheW91dC5qcyc7Ci1pbXBvcnQgeyBrVGV4ZWxSZXByZXNlbnRhdGlvbklu
Zm8gfSBmcm9tICcuL3RleHR1cmUvdGV4ZWxfZGF0YS5qcyc7Ci0KLWZ1bmN0aW9uIGlzRnAxNkZv
cm1hdChmb3JtYXQpIHsKLSAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlICdyMTZmbG9hdCc6
Ci0gICAgY2FzZSAncmcxNmZsb2F0JzoKLSAgICBjYXNlICdyZ2JhMTZmbG9hdCc6Ci0gICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIGlzRnAzMkZvcm1hdChmb3JtYXQpIHsKLSAgc3dpdGNoIChmb3JtYXQpIHsKLSAg
ICBjYXNlICdyMzJmbG9hdCc6Ci0gICAgY2FzZSAncmczMmZsb2F0JzoKLSAgICBjYXNlICdyZ2Jh
MzJmbG9hdCc6Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJu
IGZhbHNlOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGlzVW5vcm1Gb3JtYXQoZm9ybWF0KSB7Ci0gIHN3
aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSAncjh1bm9ybSc6Ci0gICAgY2FzZSAncmc4dW5vcm0n
OgotICAgIGNhc2UgJ3JnYmE4dW5vcm0nOgotICAgIGNhc2UgJ3JnYmE4dW5vcm0tc3JnYic6Ci0g
ICAgY2FzZSAnYmdyYTh1bm9ybSc6Ci0gICAgY2FzZSAnYmdyYTh1bm9ybS1zcmdiJzoKLSAgICBj
YXNlICdyZ2IxMGEydW5vcm0nOgotICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgIHJldHVybiBmYWxzZTsKLSAgfQotfQoraW1wb3J0IHsgbWFrZUluUGxhY2VDb2xvckNvbnZl
cnNpb24gfSBmcm9tICcuL2NvbG9yX3NwYWNlX2NvbnZlcnNpb24uanMnOworaW1wb3J0IHsgVGV4
ZWxWaWV3IH0gZnJvbSAnLi90ZXh0dXJlL3RleGVsX3ZpZXcuanMnOworaW1wb3J0IHsgdGV4dHVy
ZUNvbnRlbnRJc09LQnlUMkIgfSBmcm9tICcuL3RleHR1cmUvdGV4dHVyZV9vay5qcyc7CiAKIGV4
cG9ydCBjbGFzcyBDb3B5VG9UZXh0dXJlVXRpbHMgZXh0ZW5kcyBHUFVUZXN0IHsKICAgZG9GbGlw
WShzb3VyY2VQaXhlbHMsIHdpZHRoLCBoZWlnaHQsIGJ5dGVzUGVyUGl4ZWwpIHsKQEAgLTY4LDI0
NCArMjgsMzcgQEAgZXhwb3J0IGNsYXNzIENvcHlUb1RleHR1cmVVdGlscyBleHRlbmRzIEdQVVRl
c3QgewogICAgIHJldHVybiBkc3RQaXhlbHM7CiAgIH0KIAotICAvKioKLSAgICogSWYgdGhlIGRl
c3RpbmF0aW9uIGZvcm1hdCBzcGVjaWZpZXMgYSB0cmFuc2ZlciBmdW5jdGlvbiwKLSAgICogY29w
eUV4dGVybmFsSW1hZ2VUb1RleHR1cmUgKGxpa2UgQjJUL1QyVCBjb3BpZXMpIHNob3VsZCBpZ25v
cmUgaXQuCi0gICAqLwotICBmb3JtYXRGb3JFeHBlY3RlZFBpeGVscyhmb3JtYXQpIHsKLSAgICBy
ZXR1cm4gZm9ybWF0ID09PSAncmdiYTh1bm9ybS1zcmdiJwotICAgICAgPyAncmdiYTh1bm9ybScK
LSAgICAgIDogZm9ybWF0ID09PSAnYmdyYTh1bm9ybS1zcmdiJwotICAgICAgPyAnYmdyYTh1bm9y
bScKLSAgICAgIDogZm9ybWF0OwotICB9Ci0KLSAgZ2V0U291cmNlSW1hZ2VCaXRtYXBQaXhlbHMo
c291cmNlUGl4ZWxzLCB3aWR0aCwgaGVpZ2h0LCBpc1ByZW11bHRpcGxpZWQsIGlzRmxpcFkpIHsK
LSAgICByZXR1cm4gdGhpcy5nZXRFeHBlY3RlZFBpeGVscygKLSAgICAgIHNvdXJjZVBpeGVscywK
LSAgICAgIHdpZHRoLAotICAgICAgaGVpZ2h0LAotICAgICAgJ3JnYmE4dW5vcm0nLAotICAgICAg
ZmFsc2UsCi0gICAgICBpc1ByZW11bHRpcGxpZWQsCi0gICAgICBpc0ZsaXBZCi0gICAgKTsKLSAg
fQorICBnZXRFeHBlY3RlZFBpeGVscyhzb3VyY2VQaXhlbHMsIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgaXNGbGlwWSwgY29udmVyc2lvbikgeworICAgIGNvbnN0IGFwcGx5Q29udmVyc2lvbiA9IG1h
a2VJblBsYWNlQ29sb3JDb252ZXJzaW9uKGNvbnZlcnNpb24pOwogCi0gIGdldEV4cGVjdGVkUGl4
ZWxzKAotICAgIHNvdXJjZVBpeGVscywKLSAgICB3aWR0aCwKLSAgICBoZWlnaHQsCi0gICAgZm9y
bWF0LAotICAgIHNyY1ByZW11bHRpcGxpZWQsCi0gICAgZHN0UHJlbXVsdGlwbGllZCwKLSAgICBp
c0ZsaXBZLAotICAgIHNyY0NvbG9yU3BhY2UgPSAnc3JnYicsCi0gICAgZHN0Q29sb3JTcGFjZSA9
ICdzcmdiJwotICApIHsKLSAgICBjb25zdCBieXRlc1BlclBpeGVsID0ga1RleHR1cmVGb3JtYXRJ
bmZvW2Zvcm1hdF0uYnl0ZXNQZXJCbG9jazsKLQotICAgIGNvbnN0IG9yaWVudGVkUGl4ZWxzID0g
aXNGbGlwWSA/IHRoaXMuZG9GbGlwWShzb3VyY2VQaXhlbHMsIHdpZHRoLCBoZWlnaHQsIDQpIDog
c291cmNlUGl4ZWxzOwotICAgIGNvbnN0IGV4cGVjdGVkUGl4ZWxzID0gbmV3IFVpbnQ4Q2xhbXBl
ZEFycmF5KGJ5dGVzUGVyUGl4ZWwgKiB3aWR0aCAqIGhlaWdodCk7Ci0KLSAgICAvLyBHZW5lcmF0
ZSBleHBlY3RlZFBpeGVscwotICAgIC8vIFVzZSBnZXRJbWFnZURhdGEgYW5kIHJlYWRQaXhlbHMg
dG8gZ2V0IGNhbnZhcyBjb250ZW50cy4KLSAgICBjb25zdCByZXAgPSBrVGV4ZWxSZXByZXNlbnRh
dGlvbkluZm9bZm9ybWF0XTsKICAgICBjb25zdCBkaXZpZGUgPSAyNTUuMDsKLSAgICBsZXQgcmdi
YTsKLSAgICBjb25zdCByZXF1aXJlQ29sb3JTcGFjZUNvbnZlcnNpb24gPSBzcmNDb2xvclNwYWNl
ICE9PSBkc3RDb2xvclNwYWNlOwotICAgIGNvbnN0IHJlcXVpcmVVbnByZW11bHRpcGx5QWxwaGEg
PQotICAgICAgcmVxdWlyZUNvbG9yU3BhY2VDb252ZXJzaW9uIHx8IChzcmNQcmVtdWx0aXBsaWVk
ICYmICFkc3RQcmVtdWx0aXBsaWVkKTsKLSAgICBjb25zdCByZXF1aXJlUHJlbXVsdGlwbHlBbHBo
YSA9Ci0gICAgICByZXF1aXJlQ29sb3JTcGFjZUNvbnZlcnNpb24gfHwgKCFzcmNQcmVtdWx0aXBs
aWVkICYmIGRzdFByZW11bHRpcGxpZWQpOwotICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0
OyArK2kpIHsKLSAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgd2lkdGg7ICsraikgewotICAgICAg
ICBjb25zdCBwaXhlbFBvcyA9IGkgKiB3aWR0aCArIGo7Ci0KLSAgICAgICAgcmdiYSA9IHsKLSAg
ICAgICAgICBSOiBvcmllbnRlZFBpeGVsc1twaXhlbFBvcyAqIDRdIC8gZGl2aWRlLAotICAgICAg
ICAgIEc6IG9yaWVudGVkUGl4ZWxzW3BpeGVsUG9zICogNCArIDFdIC8gZGl2aWRlLAotICAgICAg
ICAgIEI6IG9yaWVudGVkUGl4ZWxzW3BpeGVsUG9zICogNCArIDJdIC8gZGl2aWRlLAotICAgICAg
ICAgIEE6IG9yaWVudGVkUGl4ZWxzW3BpeGVsUG9zICogNCArIDNdIC8gZGl2aWRlLAorICAgIHJl
dHVybiBUZXhlbFZpZXcuZnJvbVRleGVsc0FzQ29sb3JzKAorICAgICAgZm9ybWF0LAorICAgICAg
Y29vcmRzID0+IHsKKyAgICAgICAgYXNzZXJ0KGNvb3Jkcy54IDwgd2lkdGggJiYgY29vcmRzLnkg
PCBoZWlnaHQgJiYgY29vcmRzLnogPT09IDAsICdvdXQgb2YgYm91bmRzJyk7CisgICAgICAgIGNv
bnN0IHkgPSBpc0ZsaXBZID8gaGVpZ2h0IC0gY29vcmRzLnkgLSAxIDogY29vcmRzLnk7CisgICAg
ICAgIGNvbnN0IHBpeGVsUG9zID0geSAqIHdpZHRoICsgY29vcmRzLng7CisKKyAgICAgICAgY29u
c3QgcmdiYSA9IHsKKyAgICAgICAgICBSOiBzb3VyY2VQaXhlbHNbcGl4ZWxQb3MgKiA0XSAvIGRp
dmlkZSwKKyAgICAgICAgICBHOiBzb3VyY2VQaXhlbHNbcGl4ZWxQb3MgKiA0ICsgMV0gLyBkaXZp
ZGUsCisgICAgICAgICAgQjogc291cmNlUGl4ZWxzW3BpeGVsUG9zICogNCArIDJdIC8gZGl2aWRl
LAorICAgICAgICAgIEE6IHNvdXJjZVBpeGVsc1twaXhlbFBvcyAqIDQgKyAzXSAvIGRpdmlkZSwK
ICAgICAgICAgfTsKIAotICAgICAgICBpZiAocmVxdWlyZVVucHJlbXVsdGlwbHlBbHBoYSkgewot
ICAgICAgICAgIGlmIChyZ2JhLkEgIT09IDAuMCkgewotICAgICAgICAgICAgcmdiYS5SIC89IHJn
YmEuQTsKLSAgICAgICAgICAgIHJnYmEuRyAvPSByZ2JhLkE7Ci0gICAgICAgICAgICByZ2JhLkIg
Lz0gcmdiYS5BOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnQoCi0gICAg
ICAgICAgICAgIHJnYmEuUiA9PT0gMC4wICYmIHJnYmEuRyA9PT0gMC4wICYmIHJnYmEuQiA9PT0g
MC4wICYmIHJnYmEuQSA9PT0gMC4wLAotICAgICAgICAgICAgICAnVW5wcmVtdWx0aXBseSBvcHMg
d2l0aCBhbHBoYSB2YWx1ZSAwLjAgcmVxdWlyZXMgYWxsIGNoYW5uZWxzIGVxdWFscyB0byAwLjAn
Ci0gICAgICAgICAgICApOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChy
ZXF1aXJlQ29sb3JTcGFjZUNvbnZlcnNpb24pIHsKLSAgICAgICAgICAvLyBXZWJHUFUgc3VwcG9y
dCAnc3JnYicgYXMgZHN0Q29sb3JTcGFjZSBvbmx5LgotICAgICAgICAgIGlmIChzcmNDb2xvclNw
YWNlID09PSAnZGlzcGxheS1wMycgJiYgZHN0Q29sb3JTcGFjZSA9PT0gJ3NyZ2InKSB7Ci0gICAg
ICAgICAgICByZ2JhID0gZGlzcGxheVAzVG9TcmdiKHJnYmEpOwotICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICB1bnJlYWNoYWJsZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChyZXF1aXJlUHJlbXVsdGlwbHlBbHBoYSkgewotICAgICAgICAgIHJnYmEuUiAq
PSByZ2JhLkE7Ci0gICAgICAgICAgcmdiYS5HICo9IHJnYmEuQTsKLSAgICAgICAgICByZ2JhLkIg
Kj0gcmdiYS5BOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2xhbXAgMC4wIGFyb3VuZCBmbG9h
dHMgdG8gMC4wCi0gICAgICAgIGlmICgocmdiYS5SID4gMC4wICYmIHJnYmEuUiA8IDEuMGUtOCkg
fHwgKHJnYmEuUiA8IDAuMCAmJiByZ2JhLlIgPiAtMS4wZS04KSkgewotICAgICAgICAgIHJnYmEu
UiA9IDAuMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgocmdiYS5HID4gMC4wICYmIHJnYmEu
RyA8IDEuMGUtOCkgfHwgKHJnYmEuRyA8IDAuMCAmJiByZ2JhLkcgPiAtMS4wZS04KSkgewotICAg
ICAgICAgIHJnYmEuRyA9IDAuMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgocmdiYS5CID4g
MC4wICYmIHJnYmEuQiA8IDEuMGUtOCkgfHwgKHJnYmEuQiA8IDAuMCAmJiByZ2JhLkIgPiAtMS4w
ZS04KSkgewotICAgICAgICAgIHJnYmEuQiA9IDAuMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChpc1Vub3JtRm9ybWF0KGZvcm1hdCkpIHsKLSAgICAgICAgICByZ2JhLlIgPSBNYXRoLm1heCgw
LjAsIE1hdGgubWluKHJnYmEuUiwgMS4wKSk7Ci0gICAgICAgICAgcmdiYS5HID0gTWF0aC5tYXgo
MC4wLCBNYXRoLm1pbihyZ2JhLkcsIDEuMCkpOwotICAgICAgICAgIHJnYmEuQiA9IE1hdGgubWF4
KDAuMCwgTWF0aC5taW4ocmdiYS5CLCAxLjApKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1lbWNw
eSgKLSAgICAgICAgICB7IHNyYzogcmVwLnBhY2socmVwLmVuY29kZShyZ2JhKSkgfSwKLSAgICAg
ICAgICB7IGRzdDogZXhwZWN0ZWRQaXhlbHMsIHN0YXJ0OiBwaXhlbFBvcyAqIGJ5dGVzUGVyUGl4
ZWwgfQotICAgICAgICApOwotICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBleHBlY3RlZFBp
eGVsczsKLSAgfQotCi0gIC8vIE1BSU5URU5BTkNFX1RPRE8oY3JidWcuY29tL2Rhd24vODY4KTog
U2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNvbnNvbGlkYXRlIHRoaXMgYWxvbmcgd2l0aCB0ZXh0dXJl
IGNoZWNraW5nCi0gIGNoZWNrQ29weUV4dGVybmFsSW1hZ2VSZXN1bHQoc3JjLCBleHBlY3RlZCwg
d2lkdGgsIGhlaWdodCwgYnl0ZXNQZXJQaXhlbCwgZHN0Rm9ybWF0KSB7Ci0gICAgY29uc3Qgcm93
UGl0Y2ggPSBhbGlnbih3aWR0aCAqIGJ5dGVzUGVyUGl4ZWwsIGtCeXRlc1BlclJvd0FsaWdubWVu
dCk7Ci0KLSAgICBjb25zdCByZWFkYmFja1Byb21pc2UgPSB0aGlzLnJlYWRHUFVCdWZmZXJSYW5n
ZVR5cGVkKHNyYywgewotICAgICAgdHlwZTogVWludDhBcnJheSwKLSAgICAgIHR5cGVkTGVuZ3Ro
OiByb3dQaXRjaCAqIGhlaWdodCwKLSAgICB9KTsKLQotICAgIHRoaXMuZXZlbnR1YWxBc3luY0V4
cGVjdGF0aW9uKGFzeW5jIG5pY2VTdGFjayA9PiB7Ci0gICAgICBjb25zdCByZWFkYmFjayA9IGF3
YWl0IHJlYWRiYWNrUHJvbWlzZTsKLSAgICAgIGNvbnN0IGNoZWNrID0gdGhpcy5jaGVja0J1ZmZl
cldpdGhSb3dQaXRjaCgKLSAgICAgICAgcmVhZGJhY2suZGF0YSwKLSAgICAgICAgZXhwZWN0ZWQs
Ci0gICAgICAgIHdpZHRoLAotICAgICAgICBoZWlnaHQsCi0gICAgICAgIHJvd1BpdGNoLAotICAg
ICAgICBieXRlc1BlclBpeGVsLAotICAgICAgICBkc3RGb3JtYXQKLSAgICAgICk7Ci0KLSAgICAg
IGlmIChjaGVjayAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgIG5pY2VTdGFjay5tZXNzYWdlID0g
Y2hlY2s7Ci0gICAgICAgIHRoaXMucmVjLmV4cGVjdGF0aW9uRmFpbGVkKG5pY2VTdGFjayk7Ci0g
ICAgICB9Ci0gICAgICByZWFkYmFjay5jbGVhbnVwKCk7Ci0gICAgfSk7Ci0gIH0KLQotICAvLyBN
QUlOVEVOQU5DRV9UT0RPKGNyYnVnLmNvbS9kYXduLzg2OCk6IFNob3VsZCBiZSBwb3NzaWJsZSB0
byBjb25zb2xpZGF0ZSB0aGlzIGFsb25nIHdpdGggdGV4dHVyZSBjaGVja2luZwotICBjaGVja0J1
ZmZlcldpdGhSb3dQaXRjaChhY3R1YWwsIGV4cGVjdGVkLCB3aWR0aCwgaGVpZ2h0LCByb3dQaXRj
aCwgYnl0ZXNQZXJQaXhlbCwgZHN0Rm9ybWF0KSB7Ci0gICAgY29uc3QgYnl0ZXNQZXJSb3cgPSB3
aWR0aCAqIGJ5dGVzUGVyUGl4ZWw7Ci0KLSAgICBpZiAoaXNGcDE2Rm9ybWF0KGRzdEZvcm1hdCkp
IHsKLSAgICAgIGNvbnN0IGV4cEYxNmJpdHMgPSBuZXcgVWludDE2QXJyYXkoCi0gICAgICAgIGV4
cGVjdGVkLmJ1ZmZlciwKLSAgICAgICAgZXhwZWN0ZWQuYnl0ZU9mZnNldCAvIFVpbnQxNkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5ULAotICAgICAgICBleHBlY3RlZC5ieXRlTGVuZ3RoIC8gVWludDE2
QXJyYXkuQllURVNfUEVSX0VMRU1FTlQKLSAgICAgICk7Ci0KLSAgICAgIGNvbnN0IGNoZWNrRjE2
Yml0cyA9IG5ldyBVaW50MTZBcnJheSgKLSAgICAgICAgYWN0dWFsLmJ1ZmZlciwKLSAgICAgICAg
YWN0dWFsLmJ5dGVPZmZzZXQgLyBVaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVCwKLSAgICAg
ICAgYWN0dWFsLmJ5dGVMZW5ndGggLyBVaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVAotICAg
ICAgKTsKLQotICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAg
ICBjb25zdCBleHBSb3dGMTZiaXRzID0gZXhwRjE2Yml0cy5zdWJhcnJheSgKLSAgICAgICAgICAo
eSAqIGJ5dGVzUGVyUm93KSAvIGV4cEYxNmJpdHMuQllURVNfUEVSX0VMRU1FTlQsCi0gICAgICAg
ICAgYnl0ZXNQZXJSb3cgLyBleHBGMTZiaXRzLkJZVEVTX1BFUl9FTEVNRU5UCi0gICAgICAgICk7
Ci0KLSAgICAgICAgY29uc3QgY2hlY2tSb3dGMTZiaXRzID0gY2hlY2tGMTZiaXRzLnN1YmFycmF5
KAotICAgICAgICAgICh5ICogYnl0ZXNQZXJSb3cpIC8gY2hlY2tGMTZiaXRzLkJZVEVTX1BFUl9F
TEVNRU5ULAotICAgICAgICAgIGJ5dGVzUGVyUm93IC8gY2hlY2tGMTZiaXRzLkJZVEVTX1BFUl9F
TEVNRU5UCi0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gMjcwMSBpcyAwLjAwMDIgaW4gZmxvYXQx
Ni4gSWYgdGhlIHJlc3VsdCBpcyBzbWFsbGVyIHRoYW4gdGhpcywgd2UKLSAgICAgICAgLy8gdHJl
YXQgdGhlIHZhbHVlIGFzIDA7Ci0gICAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gY2hlY2tFbGVt
ZW50c0JldHdlZW4oY2hlY2tSb3dGMTZiaXRzLCBbCi0gICAgICAgICAgaSA9PiAoZXhwUm93RjE2
Yml0c1tpXSA9PT0gMCA/IDAgOiBleHBSb3dGMTZiaXRzW2ldIC0gMSksCi0gICAgICAgICAgaSA9
PiAoZXhwUm93RjE2Yml0c1tpXSA9PT0gMCA/IDI3MDEgOiBleHBSb3dGMTZiaXRzW2ldICsgMSks
Ci0gICAgICAgIF0pOwotCi0gICAgICAgIGlmIChjaGVja1Jlc3VsdCAhPT0gdW5kZWZpbmVkKSBy
ZXR1cm4gYG9uIHJvdyAke3l9OiAke2NoZWNrUmVzdWx0fWA7Ci0gICAgICB9Ci0gICAgfSBlbHNl
IGlmIChpc0ZwMzJGb3JtYXQoZHN0Rm9ybWF0KSkgewotICAgICAgY29uc3QgZXhwRjMyID0gbmV3
IEZsb2F0MzJBcnJheSgKLSAgICAgICAgZXhwZWN0ZWQuYnVmZmVyLAotICAgICAgICBleHBlY3Rl
ZC5ieXRlT2Zmc2V0IC8gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5ULAotICAgICAgICBl
eHBlY3RlZC5ieXRlTGVuZ3RoIC8gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UCi0gICAg
ICApOwotCi0gICAgICBjb25zdCBjaGVja0YzMiA9IG5ldyBGbG9hdDMyQXJyYXkoCi0gICAgICAg
IGFjdHVhbC5idWZmZXIsCi0gICAgICAgIGFjdHVhbC5ieXRlT2Zmc2V0IC8gRmxvYXQzMkFycmF5
LkJZVEVTX1BFUl9FTEVNRU5ULAotICAgICAgICBhY3R1YWwuYnl0ZUxlbmd0aCAvIEZsb2F0MzJB
cnJheS5CWVRFU19QRVJfRUxFTUVOVAotICAgICAgKTsKLQotICAgICAgZm9yIChsZXQgeSA9IDA7
IHkgPCBoZWlnaHQ7ICsreSkgewotICAgICAgICBjb25zdCBleHBSb3dGMzIgPSBleHBGMzIuc3Vi
YXJyYXkoCi0gICAgICAgICAgKHkgKiBieXRlc1BlclJvdykgLyBleHBGMzIuQllURVNfUEVSX0VM
RU1FTlQsCi0gICAgICAgICAgYnl0ZXNQZXJSb3cgLyBleHBGMzIuQllURVNfUEVSX0VMRU1FTlQK
LSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBjaGVja1Jvd0YzMiA9IGNoZWNrRjMyLnN1YmFy
cmF5KAotICAgICAgICAgICh5ICogYnl0ZXNQZXJSb3cpIC8gY2hlY2tGMzIuQllURVNfUEVSX0VM
RU1FTlQsCi0gICAgICAgICAgYnl0ZXNQZXJSb3cgLyBjaGVja0YzMi5CWVRFU19QRVJfRUxFTUVO
VAotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IGNoZWNrUmVzdWx0ID0gY2hlY2tFbGVtZW50
c0JldHdlZW4oY2hlY2tSb3dGMzIsIFsKLSAgICAgICAgICBpID0+IGV4cFJvd0YzMltpXSAtIDAu
MDAxLAotICAgICAgICAgIGkgPT4gZXhwUm93RjMyW2ldICsgMC4wMDEsCi0gICAgICAgIF0pOwot
Ci0gICAgICAgIGlmIChjaGVja1Jlc3VsdCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gYG9uIHJvdyAk
e3l9OiAke2NoZWNrUmVzdWx0fWA7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGZvciAo
bGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICAgICAgY29uc3QgZXhwID0gbmV3IFVp
bnQ4QXJyYXkoZXhwZWN0ZWQuYnVmZmVyLCBleHBlY3RlZC5ieXRlT2Zmc2V0LCBleHBlY3RlZC5i
eXRlTGVuZ3RoKTsKLSAgICAgICAgY29uc3QgY2hlY2sgPSBuZXcgVWludDhBcnJheShhY3R1YWwu
YnVmZmVyLCBhY3R1YWwuYnl0ZU9mZnNldCwgYWN0dWFsLmJ5dGVMZW5ndGgpOwotCi0gICAgICAg
IGNvbnN0IGNoZWNrUmVzdWx0ID0gY2hlY2tFbGVtZW50c0VxdWFsKAotICAgICAgICAgIGNoZWNr
LnN1YmFycmF5KHkgKiByb3dQaXRjaCwgYnl0ZXNQZXJSb3cpLAotICAgICAgICAgIGV4cC5zdWJh
cnJheSh5ICogYnl0ZXNQZXJSb3csIGJ5dGVzUGVyUm93KQotICAgICAgICApOwotCi0gICAgICAg
IGlmIChjaGVja1Jlc3VsdCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gYG9uIHJvdyAke3l9OiAke2No
ZWNrUmVzdWx0fWA7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAg
ICAgIGFwcGx5Q29udmVyc2lvbihyZ2JhKTsKKyAgICAgICAgcmV0dXJuIHJnYmE7CisgICAgICB9
LAorICAgICAgeyBjbGFtcFRvRm9ybWF0UmFuZ2U6IHRydWUgfQorICAgICk7CiAgIH0KIAogICBk
b1Rlc3RBbmRDaGVja1Jlc3VsdCgKICAgICBpbWFnZUNvcHlFeHRlcm5hbEltYWdlLAogICAgIGRz
dFRleHR1cmVDb3B5VmlldywKKyAgICBleHBUZXhlbFZpZXcsCiAgICAgY29weVNpemUsCi0gICAg
Ynl0ZXNQZXJQaXhlbCwKLSAgICBleHBlY3RlZERhdGEsCi0gICAgZHN0Rm9ybWF0CisgICAgdGV4
ZWxDb21wYXJlT3B0aW9ucwogICApIHsKICAgICB0aGlzLmRldmljZS5xdWV1ZS5jb3B5RXh0ZXJu
YWxJbWFnZVRvVGV4dHVyZSgKICAgICAgIGltYWdlQ29weUV4dGVybmFsSW1hZ2UsCkBAIC0zMTMs
MzQgKzY2LDE0IEBAIGV4cG9ydCBjbGFzcyBDb3B5VG9UZXh0dXJlVXRpbHMgZXh0ZW5kcyBHUFVU
ZXN0IHsKICAgICAgIGNvcHlTaXplCiAgICAgKTsKIAotICAgIGNvbnN0IGV4dGVybmFsSW1hZ2Ug
PSBpbWFnZUNvcHlFeHRlcm5hbEltYWdlLnNvdXJjZTsKLSAgICBjb25zdCBkc3RUZXh0dXJlID0g
ZHN0VGV4dHVyZUNvcHlWaWV3LnRleHR1cmU7Ci0KLSAgICBjb25zdCBieXRlc1BlclJvdyA9IGFs
aWduKGV4dGVybmFsSW1hZ2Uud2lkdGggKiBieXRlc1BlclBpeGVsLCBrQnl0ZXNQZXJSb3dBbGln
bm1lbnQpOwotICAgIGNvbnN0IHRlc3RCdWZmZXIgPSB0aGlzLmRldmljZS5jcmVhdGVCdWZmZXIo
ewotICAgICAgc2l6ZTogYnl0ZXNQZXJSb3cgKiBleHRlcm5hbEltYWdlLmhlaWdodCwKLSAgICAg
IHVzYWdlOiBHUFVCdWZmZXJVc2FnZS5DT1BZX1NSQyB8IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNU
LAotICAgIH0pOwotCi0gICAgdGhpcy50cmFja0ZvckNsZWFudXAodGVzdEJ1ZmZlcik7Ci0KLSAg
ICBjb25zdCBlbmNvZGVyID0gdGhpcy5kZXZpY2UuY3JlYXRlQ29tbWFuZEVuY29kZXIoKTsKLQot
ICAgIGVuY29kZXIuY29weVRleHR1cmVUb0J1ZmZlcigKLSAgICAgIHsgdGV4dHVyZTogZHN0VGV4
dHVyZSwgbWlwTGV2ZWw6IDAsIG9yaWdpbjogeyB4OiAwLCB5OiAwLCB6OiAwIH0gfSwKLSAgICAg
IHsgYnVmZmVyOiB0ZXN0QnVmZmVyLCBieXRlc1BlclJvdyB9LAotICAgICAgeyB3aWR0aDogZXh0
ZXJuYWxJbWFnZS53aWR0aCwgaGVpZ2h0OiBleHRlcm5hbEltYWdlLmhlaWdodCwgZGVwdGhPckFy
cmF5TGF5ZXJzOiAxIH0KKyAgICBjb25zdCByZXN1bHRQcm9taXNlID0gdGV4dHVyZUNvbnRlbnRJ
c09LQnlUMkIoCisgICAgICB0aGlzLAorICAgICAgeyB0ZXh0dXJlOiBkc3RUZXh0dXJlQ29weVZp
ZXcudGV4dHVyZSB9LAorICAgICAgY29weVNpemUsCisgICAgICB7IGV4cFRleGVsVmlldyB9LAor
ICAgICAgdGV4ZWxDb21wYXJlT3B0aW9ucwogICAgICk7CiAKLSAgICB0aGlzLmRldmljZS5xdWV1
ZS5zdWJtaXQoW2VuY29kZXIuZmluaXNoKCldKTsKLQotICAgIHRoaXMuY2hlY2tDb3B5RXh0ZXJu
YWxJbWFnZVJlc3VsdCgKLSAgICAgIHRlc3RCdWZmZXIsCi0gICAgICBleHBlY3RlZERhdGEsCi0g
ICAgICBleHRlcm5hbEltYWdlLndpZHRoLAotICAgICAgZXh0ZXJuYWxJbWFnZS5oZWlnaHQsCi0g
ICAgICBieXRlc1BlclBpeGVsLAotICAgICAgZHN0Rm9ybWF0Ci0gICAgKTsKKyAgICB0aGlzLmV2
ZW50dWFsRXhwZWN0T0socmVzdWx0UHJvbWlzZSk7CiAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2NyZWF0ZV9lbGVtZW50cy5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2NyZWF0ZV9lbGVtZW50
cy5qcwppbmRleCBjYmFkOTExMGY3OTQuLmQyYjA5NjlkODQwYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvY3JlYXRlX2VsZW1lbnRzLmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL2NyZWF0ZV9lbGVt
ZW50cy5qcwpAQCAtMSw3ICsxLDI1IEBACiAvKioKICAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9U
IEVESVQuIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9jdHMKICAqKi8gaW1wb3J0
IHsgdW5yZWFjaGFibGUgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsKLWV4cG9y
dCBjb25zdCBhbGxDYW52YXNUeXBlcyA9IFsnb25zY3JlZW4nLCAnb2Zmc2NyZWVuJ107CitleHBv
cnQgY29uc3Qga0FsbENhbnZhc1R5cGVzID0gWydvbnNjcmVlbicsICdvZmZzY3JlZW4nXTsKKwor
LyoqIFZhbGlkIGNvbnRleHRJZCBmb3IgSFRNTENhbnZhc0VsZW1lbnQvT2Zmc2NyZWVuQ2FudmFz
LAorICogIHNwZWM6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2NhbnZh
cy5odG1sI2RvbS1jYW52YXMtZ2V0Y29udGV4dAorICovCitleHBvcnQgY29uc3Qga1ZhbGlkQ2Fu
dmFzQ29udGV4dElkcyA9IFsnMmQnLCAnYml0bWFwcmVuZGVyZXInLCAnd2ViZ2wnLCAnd2ViZ2wy
JywgJ3dlYmdwdSddOworCisvKiogSGVscGVyKHMpIHRvIGRldGVybWluZSBpZiBjb250ZXh0IGlz
IGNvcHlhYmxlLiAqLworZXhwb3J0IGZ1bmN0aW9uIGNhbkNvcHlGcm9tQ2FudmFzQ29udGV4dChj
b250ZXh0TmFtZSkgeworICBzd2l0Y2ggKGNvbnRleHROYW1lKSB7CisgICAgY2FzZSAnMmQnOgor
ICAgIGNhc2UgJ3dlYmdsJzoKKyAgICBjYXNlICd3ZWJnbDInOgorICAgIGNhc2UgJ3dlYmdwdSc6
CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGZhbHNlOwor
ICB9Cit9CiAKIC8qKiBDcmVhdGUgSFRNTENhbnZhcy9PZmZzY3JlZW5DYW52YXMuICovCiBleHBv
cnQgZnVuY3Rpb24gY3JlYXRlQ2FudmFzKHRlc3QsIGNhbnZhc1R5cGUsIHdpZHRoLCBoZWlnaHQp
IHsKQEAgLTEzLDcgKzMxLDExIEBAIGV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDYW52YXModGVzdCwg
Y2FudmFzVHlwZSwgd2lkdGgsIGhlaWdodCkgewogICAgICAgdGVzdC5za2lwKCdDYW5ub3QgY3Jl
YXRlIEhUTUxDYW52YXNFbGVtZW50Jyk7CiAgICAgfQogICB9IGVsc2UgaWYgKGNhbnZhc1R5cGUg
PT09ICdvZmZzY3JlZW4nKSB7Ci0gICAgY2FudmFzID0gY3JlYXRlT2Zmc2NyZWVuQ2FudmFzKHRl
c3QsIHdpZHRoLCBoZWlnaHQpOworICAgIGlmICh0eXBlb2YgT2Zmc2NyZWVuQ2FudmFzICE9PSAn
dW5kZWZpbmVkJykgeworICAgICAgY2FudmFzID0gY3JlYXRlT2Zmc2NyZWVuQ2FudmFzKHRlc3Qs
IHdpZHRoLCBoZWlnaHQpOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0LnNraXAoJ0Nhbm5vdCBj
cmVhdGUgYW4gT2Zmc2NyZWVuQ2FudmFzJyk7CisgICAgfQogICB9IGVsc2UgewogICAgIHVucmVh
Y2hhYmxlKCk7CiAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS91dGlsL2RldmljZV9wb29sLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L3V0aWwvZGV2aWNlX3Bvb2wuanMKaW5kZXggY2ZmMjY0YzQ4OTFmLi5jMDMzY2Rm
MTQyM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91
dGlsL2RldmljZV9wb29sLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS91dGlsL2RldmljZV9wb29sLmpzCkBAIC0zLDcgKzMsNyBAQAogICoqLyBpbXBvcnQgeyBT
a2lwVGVzdENhc2UgfSBmcm9tICcuLi8uLi9jb21tb24vZnJhbWV3b3JrL2ZpeHR1cmUuanMnOwog
aW1wb3J0IHsgZ2V0R1BVIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWwvbmF2aWdhdG9yX2dwdS5q
cyc7CiBpbXBvcnQgeyBhc3NlcnQsIHJhY2VXaXRoUmVqZWN0T25UaW1lb3V0LCBhc3NlcnRSZWpl
Y3QgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsKLWltcG9ydCB7IERlZmF1bHRM
aW1pdHMgfSBmcm9tICcuLi9jb25zdGFudHMuanMnOworaW1wb3J0IHsga0xpbWl0SW5mbywga0xp
bWl0cyB9IGZyb20gJy4uL2NhcGFiaWxpdHlfaW5mby5qcyc7CiAKIGNsYXNzIFRlc3RGYWlsZWRC
dXREZXZpY2VSZXVzYWJsZSBleHRlbmRzIEVycm9yIHt9CiBjbGFzcyBGZWF0dXJlc05vdFN1cHBv
cnRlZCBleHRlbmRzIEVycm9yIHt9CkBAIC0xOCwxNCArMTgsMjEgQEAgZXhwb3J0IGNsYXNzIERl
dmljZVBvb2wgewogICAvKiogUmVxdWVzdCBhIGRldmljZSBmcm9tIHRoZSBwb29sLiAqLwogICBh
c3luYyByZXNlcnZlKGRlc2NyaXB0b3IpIHsKICAgICAvLyBBbHdheXMgYXR0ZW1wdCB0byBpbml0
aWFsaXplIGRlZmF1bHQgZGV2aWNlLCB0byBzZWUgaWYgaXQgc3VjY2VlZHMuCisgICAgbGV0IGVy
cm9yTWVzc2FnZSA9ICcnOwogICAgIGlmICh0aGlzLmRlZmF1bHRIb2xkZXIgPT09ICd1bmluaXRp
YWxpemVkJykgewogICAgICAgdHJ5IHsKICAgICAgICAgdGhpcy5kZWZhdWx0SG9sZGVyID0gYXdh
aXQgRGV2aWNlSG9sZGVyLmNyZWF0ZSh1bmRlZmluZWQpOwogICAgICAgfSBjYXRjaCAoZXgpIHsK
ICAgICAgICAgdGhpcy5kZWZhdWx0SG9sZGVyID0gJ2ZhaWxlZCc7CisgICAgICAgIGlmIChleCBp
bnN0YW5jZW9mIEVycm9yKSB7CisgICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCB3aXRoICR7ZXgu
bmFtZX0gIiR7ZXgubWVzc2FnZX0iYDsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KLSAgICBh
c3NlcnQodGhpcy5kZWZhdWx0SG9sZGVyICE9PSAnZmFpbGVkJywgJ1dlYkdQVSBkZXZpY2UgZmFp
bGVkIHRvIGluaXRpYWxpemU7IG5vdCByZXRyeWluZycpOworICAgIGFzc2VydCgKKyAgICAgIHRo
aXMuZGVmYXVsdEhvbGRlciAhPT0gJ2ZhaWxlZCcsCisgICAgICBgV2ViR1BVIGRldmljZSBmYWls
ZWQgdG8gaW5pdGlhbGl6ZSR7ZXJyb3JNZXNzYWdlfTsgbm90IHJldHJ5aW5nYAorICAgICk7CiAK
ICAgICBsZXQgaG9sZGVyOwogICAgIGlmIChkZXNjcmlwdG9yID09PSB1bmRlZmluZWQpIHsKQEAg
LTcwLDcgKzc3LDE3IEBAIGV4cG9ydCBjbGFzcyBEZXZpY2VQb29sIHsKICAgICAgICAgICBob2xk
ZXIuZGV2aWNlLmRlc3Ryb3koKTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgdGhyb3cgZXg7
CisgICAgICAvLyBJbiB0aGUgdHJ5IGJsb2NrLCB3ZSBtYXkgdGhyb3cgYW4gZXJyb3IgaWYgdGhl
IGRldmljZSBpcyBsb3N0IGluIG9yZGVyIHRvIGZvcmNlIGRldmljZQorICAgICAgLy8gcmVpbml0
aWFsaXphdGlvbiwgaG93ZXZlciwgaWYgdGhlIGRldmljZSBsb3N0IHdhcyBleHBlY3RlZCB3ZSB3
YW50IHRvIHN1cHByZXNzIHRoZSBlcnJvcgorICAgICAgLy8gVGhlIGRldmljZSBsb3N0IGlzIGV4
cGVjdGVkIHdoZW4gYGhvbGRlci5leHBlY3RlZExvc3RSZWFzb25gIGlzIGVxdWFsIHRvCisgICAg
ICAvLyBgaG9sZGVyLmxvc3RJbmZvLnJlYXNvbmAuCisgICAgICBjb25zdCBleHBlY3RlZERldmlj
ZUxvc3QgPQorICAgICAgICBob2xkZXIuZXhwZWN0ZWRMb3N0UmVhc29uICE9PSB1bmRlZmluZWQg
JiYKKyAgICAgICAgaG9sZGVyLmxvc3RJbmZvICE9PSB1bmRlZmluZWQgJiYKKyAgICAgICAgaG9s
ZGVyLmV4cGVjdGVkTG9zdFJlYXNvbiA9PT0gaG9sZGVyLmxvc3RJbmZvLnJlYXNvbjsKKyAgICAg
IGlmICghZXhwZWN0ZWREZXZpY2VMb3N0KSB7CisgICAgICAgIHRocm93IGV4OworICAgICAgfQog
ICAgIH0gZmluYWxseSB7CiAgICAgICAvLyBNYXJrIHRoZSBob2xkZXIgYXMgZnJlZS4gKFRoaXMg
b25seSBoYXMgYW4gZWZmZWN0IGlmIHRoZSBwb29sIHN0aWxsIGhhcyB0aGUgaG9sZGVyLikKICAg
ICAgIC8vIFRoaXMgY291bGQgYmUgZG9uZSBhdCB0aGUgdG9wIGJ1dCBpcyBkb25lIGhlcmUgdG8g
Z3VhcmQgYWdhaW5zdCBhc3luYy1yYWNlcyBkdXJpbmcgcmVsZWFzZS4KQEAgLTE2OSwxMSArMTg2
LDEyIEBAIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZURlc2NyaXB0b3IoZGVzYykgewogICAgKiBzcGVj
aWZpZWQgX2FuZF8gbm9uLWRlZmF1bHQuICovCiAgIGNvbnN0IGxpbWl0c0Nhbm9uaWNhbGl6ZWQg
PSB7fTsKICAgaWYgKGRlc2MucmVxdWlyZWRMaW1pdHMpIHsKLSAgICBmb3IgKGNvbnN0IFtrLCBk
ZWZhdWx0VmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKERlZmF1bHRMaW1pdHMpKSB7Ci0gICAgICBj
b25zdCByZXF1ZXN0ZWRWYWx1ZSA9IGRlc2MucmVxdWlyZWRMaW1pdHNba107CisgICAgZm9yIChj
b25zdCBsaW1pdCBvZiBrTGltaXRzKSB7CisgICAgICBjb25zdCByZXF1ZXN0ZWRWYWx1ZSA9IGRl
c2MucmVxdWlyZWRMaW1pdHNbbGltaXRdOworICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0ga0xp
bWl0SW5mb1tsaW1pdF0uZGVmYXVsdDsKICAgICAgIC8vIFNraXAgYWRkaW5nIGEgbGltaXQgdG8g
bGltaXRzQ2Fub25pY2FsaXplZCBpZiBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgZGVmYXVsdC4KICAg
ICAgIGlmIChyZXF1ZXN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHJlcXVlc3RlZFZhbHVlICE9
PSBkZWZhdWx0VmFsdWUpIHsKLSAgICAgICAgbGltaXRzQ2Fub25pY2FsaXplZFtrXSA9IHJlcXVl
c3RlZFZhbHVlOworICAgICAgICBsaW1pdHNDYW5vbmljYWxpemVkW2xpbWl0XSA9IHJlcXVlc3Rl
ZFZhbHVlOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTgyLDYgKzIwMCw3IEBAIGZ1bmN0aW9u
IGNhbm9uaWNhbGl6ZURlc2NyaXB0b3IoZGVzYykgewogICBjb25zdCBkZXNjcmlwdG9yQ2Fub25p
Y2FsaXplZCA9IHsKICAgICByZXF1aXJlZEZlYXR1cmVzOiBmZWF0dXJlc0Nhbm9uaWNhbGl6ZWQs
CiAgICAgcmVxdWlyZWRMaW1pdHM6IGxpbWl0c0Nhbm9uaWNhbGl6ZWQsCisgICAgZGVmYXVsdFF1
ZXVlOiB7fSwKICAgfTsKIAogICByZXR1cm4gW2Rlc2NyaXB0b3JDYW5vbmljYWxpemVkLCBKU09O
LnN0cmluZ2lmeShkZXNjcmlwdG9yQ2Fub25pY2FsaXplZCldOwpAQCAtMjQ1LDYgKzI2NCwxMCBA
QCBjbGFzcyBEZXZpY2VIb2xkZXIgewogICAgIHJldHVybiB0aGlzLmRldmljZTsKICAgfQogCisg
IGV4cGVjdERldmljZUxvc3QocmVhc29uKSB7CisgICAgdGhpcy5leHBlY3RlZExvc3RSZWFzb24g
PSByZWFzb247CisgIH0KKwogICBhc3luYyBlbnN1cmVSZWxlYXNlKCkgewogICAgIGNvbnN0IGtQ
b3BFcnJvclNjb3BlVGltZW91dE1TID0gNTAwMDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvbWF0aC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL21hdGguanMKaW5kZXggNzdhOTJkNTUyZjhmLi4xNWUz
Y2UxMGZkNDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS91dGlsL21hdGguanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3V0aWwvbWF0aC5qcwpAQCAtMSw3ICsxLDcgQEAKIC8qKgogICogQVVUTy1HRU5FUkFURUQgLSBE
TyBOT1QgRURJVC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cwogICoqLyBp
bXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsKLWltcG9y
dCB7IGtCaXQgfSBmcm9tICcuL2NvbnN0YW50cy5qcyc7CitpbXBvcnQgeyBrQml0LCBrVmFsdWUg
fSBmcm9tICcuL2NvbnN0YW50cy5qcyc7CiBpbXBvcnQgeyBmMzIsIGYzMkJpdHMsIGkzMiB9IGZy
b20gJy4vY29udmVyc2lvbi5qcyc7CiAKIC8qKgpAQCAtOTAsNyArOTAsNyBAQCBmdW5jdGlvbiBm
bHVzaFN1Ym5vcm1hbEJpdHModmFsKSB7CiAvKioKICAqIEByZXR1cm5zIDAgaWYgfHZhbHwgaXMg
YSBzdWJub3JtYWwgZjMyIG51bWJlciwgb3RoZXJ3aXNlIHJldHVybnMgfHZhbHwKICAqLwotZnVu
Y3Rpb24gZmx1c2hTdWJub3JtYWxTY2FsYXIodmFsKSB7CitleHBvcnQgZnVuY3Rpb24gZmx1c2hT
dWJub3JtYWxTY2FsYXIodmFsKSB7CiAgIHJldHVybiBpc1N1Ym5vcm1hbFNjYWxhcih2YWwpID8g
ZjMyKDApIDogdmFsOwogfQogCkBAIC0xMTEsNiArMTExLDExIEBAIGV4cG9ydCBmdW5jdGlvbiBp
c1N1Ym5vcm1hbFNjYWxhcih2YWwpIHsKICAgcmV0dXJuICh1MzJfdmFsICYgMHg3ZjgwMDAwMCkg
PT09IDA7CiB9CiAKKy8qKiBVdGlsaXR5IHRvIHBhc3MgVFMgbnVtYmVycyBpbnRvIHxpc1N1Ym5v
cm1hbE51bWJlcnwgKi8KK2V4cG9ydCBmdW5jdGlvbiBpc1N1Ym5vcm1hbE51bWJlcih2YWwpIHsK
KyAgcmV0dXJuIGlzU3Vibm9ybWFsU2NhbGFyKGYzMih2YWwpKTsKK30KKwogLyoqCiAgKiBAcmV0
dXJucyB0aGUgbmV4dCBzaW5nbGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHZhbHVlIGFmdGVy
IHx2YWx8LAogICogdG93YXJkcyAraW5mIGlmIHxkaXJ8IGlzIHRydWUsIG90aGVyd2lzZSB0b3dh
cmRzIC1pbmYuCkBAIC0yNzIsNyArMjc3LDE0IEBAIGV4cG9ydCBmdW5jdGlvbiBsZXJwKGEsIGIs
IHQpIHsKIAogLyoqIEByZXR1cm5zIGEgbGluZWFyIGluY3JlYXNpbmcgcmFuZ2Ugb2YgbnVtYmVy
cy4gKi8KIGV4cG9ydCBmdW5jdGlvbiBsaW5lYXJSYW5nZShhLCBiLCBudW1fc3RlcHMpIHsKLSAg
YXNzZXJ0KG51bV9zdGVwcyA+IDAsICd8bnVtX3N0ZXBzfCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAw
Jyk7CisgIGlmIChudW1fc3RlcHMgPD0gMCkgeworICAgIHJldHVybiBBcnJheSgpOworICB9CisK
KyAgLy8gQXZvaWQgZGl2aXNpb24gYnkgMAorICBpZiAobnVtX3N0ZXBzID09PSAxKSB7CisgICAg
cmV0dXJuIFthXTsKKyAgfQogCiAgIHJldHVybiBBcnJheS5mcm9tKEFycmF5KG51bV9zdGVwcyku
a2V5cygpKS5tYXAoaSA9PiBsZXJwKGEsIGIsIGkgLyAobnVtX3N0ZXBzIC0gMSkpKTsKIH0KQEAg
LTI4NCwxNiArMjk2LDUzIEBAIGV4cG9ydCBmdW5jdGlvbiBsaW5lYXJSYW5nZShhLCBiLCBudW1f
c3RlcHMpIHsKICAqIHRodXMgYmlhc2luZyB0b3dhcmRzIDAsIGJ1dCByZW1haW5pbmcgb24gdGhl
IFswLCAxXSByYW5nZS4KICAqIFRoaXMgYmlhc2VkIHJhbmdlIGlzIHRoZW4gc2NhbGVkIHRvIHRo
ZSBkZXNpcmVkIHJhbmdlIHVzaW5nIGxlcnAuCiAgKiBEaWZmZXJlbnQgY3VydmVzIGNvdWxkIGJl
IGdlbmVyYXRlZCBieSBjaGFuZ2luZyBjLCB3aGVyZSBncmVhdGVyIHZhbHVlcyBvZiBjIHdpbGwg
YmlhcyBtb3JlIHRvd2FyZHMgMC4KLSAqICovCisgKi8KIGV4cG9ydCBmdW5jdGlvbiBiaWFzZWRS
YW5nZShhLCBiLCBudW1fc3RlcHMpIHsKICAgY29uc3QgYyA9IDI7Ci0gIGFzc2VydChudW1fc3Rl
cHMgPiAwLCAnfG51bV9zdGVwc3wgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcpOworICBpZiAobnVt
X3N0ZXBzIDw9IDApIHsKKyAgICByZXR1cm4gQXJyYXkoKTsKKyAgfQorCisgIC8vIEF2b2lkIGRp
dmlzaW9uIGJ5IDAKKyAgaWYgKG51bV9zdGVwcyA9PT0gMSkgeworICAgIHJldHVybiBbYV07Cisg
IH0KIAogICByZXR1cm4gQXJyYXkuZnJvbShBcnJheShudW1fc3RlcHMpLmtleXMoKSkubWFwKGkg
PT4KICAgICBsZXJwKGEsIGIsIE1hdGgucG93KGxlcnAoMCwgMSwgaSAvIChudW1fc3RlcHMgLSAx
KSksIGMpKQogICApOwogfQogCisvKioKKyAqIEByZXR1cm5zIGFuIGFzY2VuZGluZyBzb3J0ZWQg
YXJyYXkgb2YgbnVtYmVycyBzcHJlYWQgb3ZlciB0aGUgZW50aXJlIHJhbmdlIG9mIDMyLWJpdCBm
bG9hdHMKKyAqCisgKiBOdW1iZXJzIGFyZSBkaXZpZGVkIGludG8gNCByZWdpb25zOiBuZWdhdGl2
ZSBub3JtYWxzLCBuZWdhdGl2ZSBzdWJub3JtYWxzLCBwb3NpdGl2ZSBzdWJub3JtYWxzICYgcG9z
aXRpdmUgbm9ybWFscy4KKyAqIFplcm8gaXMgaW5jbHVkZWQuIFRoZSBub3JtYWwgbnVtYmVyIHJl
Z2lvbnMgYXJlIGJpYXNlZCB0b3dhcmRzIHplcm8sIGFuZCB0aGUgc3Vibm9ybWFsIHJlZ2lvbnMg
YXJlIGxpbmVhcmx5IHNwcmVhZC4KKyAqCisgKiBAcGFyYW0gY291bnRzIHN0cnVjdHVyZSBwYXJh
bSB3aXRoIDQgZW50cmllcyBpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2YgZW50cmllcyB0byBiZSBn
ZW5lcmF0ZWQgZWFjaCByZWdpb24sIHZhbHVlcyBtdXN0IGJlIDAgb3IgZ3JlYXRlci4KKyAqLwor
ZXhwb3J0IGZ1bmN0aW9uIGZ1bGxGMzJSYW5nZShjb3VudHMgPSB7IHBvc19zdWI6IDEwLCBwb3Nf
bm9ybTogNTAgfSkgeworICBjb3VudHMubmVnX25vcm0gPSBjb3VudHMubmVnX25vcm0gPT09IHVu
ZGVmaW5lZCA/IGNvdW50cy5wb3Nfbm9ybSA6IGNvdW50cy5uZWdfbm9ybTsKKyAgY291bnRzLm5l
Z19zdWIgPSBjb3VudHMubmVnX3N1YiA9PT0gdW5kZWZpbmVkID8gY291bnRzLnBvc19zdWIgOiBj
b3VudHMubmVnX3N1YjsKKyAgcmV0dXJuIFsKKyAgICAuLi5iaWFzZWRSYW5nZShrVmFsdWUuZjMy
Lm5lZ2F0aXZlLm1heCwga1ZhbHVlLmYzMi5uZWdhdGl2ZS5taW4sIGNvdW50cy5uZWdfbm9ybSks
CisgICAgLi4ubGluZWFyUmFuZ2UoCisgICAgICBrVmFsdWUuZjMyLnN1Ym5vcm1hbC5uZWdhdGl2
ZS5taW4sCisgICAgICBrVmFsdWUuZjMyLnN1Ym5vcm1hbC5uZWdhdGl2ZS5tYXgsCisgICAgICBj
b3VudHMubmVnX3N1YgorICAgICksCisKKyAgICAwLjAsCisgICAgLi4ubGluZWFyUmFuZ2UoCisg
ICAgICBrVmFsdWUuZjMyLnN1Ym5vcm1hbC5wb3NpdGl2ZS5taW4sCisgICAgICBrVmFsdWUuZjMy
LnN1Ym5vcm1hbC5wb3NpdGl2ZS5tYXgsCisgICAgICBjb3VudHMucG9zX3N1YgorICAgICksCisK
KyAgICAuLi5iaWFzZWRSYW5nZShrVmFsdWUuZjMyLnBvc2l0aXZlLm1pbiwga1ZhbHVlLmYzMi5w
b3NpdGl2ZS5tYXgsIGNvdW50cy5wb3Nfbm9ybSksCisgIF07Cit9CisKIC8qKgogICogQHJldHVy
bnMgdGhlIHJlc3VsdCBtYXRyaXggaW4gQXJyYXk8QXJyYXk8bnVtYmVyPj4gdHlwZS4KICAqCkBA
IC0zMzQsMyArMzgzLDMwIEBAIGV4cG9ydCBmdW5jdGlvbiBxdWFudGl6ZVRvRjMyKG51bSkgewog
ZXhwb3J0IGZ1bmN0aW9uIHF1YW50aXplVG9JMzIobnVtKSB7CiAgIHJldHVybiBpMzIobnVtKS52
YWx1ZTsKIH0KKworLyoqIEByZXR1cm5zIHdoZXRoZXIgdGhlIG51bWJlciBpcyBhbiBpbnRlZ2Vy
IGFuZCBhIHBvd2VyIG9mIHR3byAqLworZXhwb3J0IGZ1bmN0aW9uIGlzUG93ZXJPZlR3byhuKSB7
CisgIGlmICghTnVtYmVyLmlzSW50ZWdlcihuKSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQor
ICByZXR1cm4gbiAhPT0gMCAmJiAobiAmIChuIC0gMSkpID09PSAwOworfQorCisvKiogQHJldHVy
bnMgdGhlIEdyZWF0ZXN0IENvbW1vbiBEaXZpc29yIChHQ0QpIG9mIHRoZSBpbnB1dHMgKi8KK2V4
cG9ydCBmdW5jdGlvbiBnY2QoYSwgYikgeworICBhc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihhKSAm
JiBhID4gMCk7CisgIGFzc2VydChOdW1iZXIuaXNJbnRlZ2VyKGIpICYmIGIgPiAwKTsKKworICB3
aGlsZSAoYiAhPT0gMCkgeworICAgIGNvbnN0IGJUZW1wID0gYjsKKyAgICBiID0gYSAlIGI7Cisg
ICAgYSA9IGJUZW1wOworICB9CisKKyAgcmV0dXJuIGE7Cit9CisKKy8qKiBAcmV0dXJucyB0aGUg
TGVhc3QgQ29tbW9uIE11bHRpcGxpZXIgKExDTSkgb2YgdGhlIGlucHV0cyAqLworZXhwb3J0IGZ1
bmN0aW9uIGxjbShhLCBiKSB7CisgIHJldHVybiAoYSAqIGIpIC8gZ2NkKGEsIGIpOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVy
ZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL3RleHR1cmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMjliNmJlMGMwYmQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
dXRpbC90ZXh0dXJlLmpzCkBAIC0wLDAgKzEsNjAgQEAKKy8qKgorICogQVVUTy1HRU5FUkFURUQg
LSBETyBOT1QgRURJVC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cworICoq
LyBpbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsKK2lt
cG9ydCB7IGtUZXh0dXJlRm9ybWF0SW5mbyB9IGZyb20gJy4uL2NhcGFiaWxpdHlfaW5mby5qcyc7
CitpbXBvcnQgeyBhbGlnbiB9IGZyb20gJy4vbWF0aC5qcyc7CisKK2ltcG9ydCB7IHJlaWZ5RXh0
ZW50M0QgfSBmcm9tICcuL3VuaW9ucy5qcyc7CisKKy8qKgorICogQ3JlYXRlcyBhIHRleHR1cmUg
d2l0aCB0aGUgY29udGVudHMgb2YgYSBUZXhlbFZpZXcuCisgKi8KK2V4cG9ydCBmdW5jdGlvbiBt
YWtlVGV4dHVyZVdpdGhDb250ZW50cyhkZXZpY2UsIHRleGVsVmlldywgZGVzYykgeworICBjb25z
dCB7IHdpZHRoLCBoZWlnaHQsIGRlcHRoT3JBcnJheUxheWVycyB9ID0gcmVpZnlFeHRlbnQzRChk
ZXNjLnNpemUpOworCisgIGNvbnN0IHsgYnl0ZXNQZXJCbG9jaywgYmxvY2tXaWR0aCB9ID0ga1Rl
eHR1cmVGb3JtYXRJbmZvW3RleGVsVmlldy5mb3JtYXRdOworICAvLyBDdXJyZW50bHkgdW5pbXBs
ZW1lbnRlZCBmb3IgY29tcHJlc3NlZCB0ZXh0dXJlcy4KKyAgYXNzZXJ0KGJsb2NrV2lkdGggPT09
IDEpOworCisgIC8vIENvbXB1dGUgYnl0ZXMgcGVyIHJvdy4KKyAgY29uc3QgYnl0ZXNQZXJSb3cg
PSBhbGlnbihieXRlc1BlckJsb2NrICogd2lkdGgsIDI1Nik7CisKKyAgLy8gQ3JlYXRlIGEgc3Rh
Z2luZyBidWZmZXIgdG8gdXBsb2FkIHRoZSB0ZXh0dXJlIGNvbnRlbnRzLgorICBjb25zdCBzdGFn
aW5nQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7CisgICAgbWFwcGVkQXRDcmVhdGlvbjog
dHJ1ZSwKKyAgICBzaXplOiBieXRlc1BlclJvdyAqIGhlaWdodCAqIGRlcHRoT3JBcnJheUxheWVy
cywKKyAgICB1c2FnZTogR1BVQnVmZmVyVXNhZ2UuQ09QWV9TUkMsCisgIH0pOworCisgIC8vIFdy
aXRlIHRoZSB0ZXhlbHMgaW50byB0aGUgc3RhZ2luZyBidWZmZXIuCisgIHRleGVsVmlldy53cml0
ZVRleHR1cmVEYXRhKG5ldyBVaW50OEFycmF5KHN0YWdpbmdCdWZmZXIuZ2V0TWFwcGVkUmFuZ2Uo
KSksIHsKKyAgICBieXRlc1BlclJvdywKKyAgICByb3dzUGVySW1hZ2U6IGhlaWdodCwKKyAgICBz
dWJyZWN0T3JpZ2luOiBbMCwgMCwgMF0sCisgICAgc3VicmVjdFNpemU6IFt3aWR0aCwgaGVpZ2h0
LCBkZXB0aE9yQXJyYXlMYXllcnNdLAorICB9KTsKKworICBzdGFnaW5nQnVmZmVyLnVubWFwKCk7
CisKKyAgLy8gQ3JlYXRlIHRoZSB0ZXh0dXJlLgorICBjb25zdCB0ZXh0dXJlID0gZGV2aWNlLmNy
ZWF0ZVRleHR1cmUoeworICAgIC4uLmRlc2MsCisgICAgZm9ybWF0OiB0ZXhlbFZpZXcuZm9ybWF0
LAorICAgIHVzYWdlOiBkZXNjLnVzYWdlIHwgR1BVVGV4dHVyZVVzYWdlLkNPUFlfRFNULAorICB9
KTsKKworICAvLyBDb3B5IGZyb20gdGhlIHN0YWdpbmcgYnVmZmVyIGludG8gdGhlIHRleHR1cmUu
CisgIGNvbnN0IGNvbW1hbmRFbmNvZGVyID0gZGV2aWNlLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCk7
CisgIGNvbW1hbmRFbmNvZGVyLmNvcHlCdWZmZXJUb1RleHR1cmUoCisgICAgeyBidWZmZXI6IHN0
YWdpbmdCdWZmZXIsIGJ5dGVzUGVyUm93IH0sCisgICAgeyB0ZXh0dXJlIH0sCisgICAgZGVzYy5z
aXplCisgICk7CisKKyAgZGV2aWNlLnF1ZXVlLnN1Ym1pdChbY29tbWFuZEVuY29kZXIuZmluaXNo
KCldKTsKKworICAvLyBDbGVhbiB1cCB0aGUgc3RhZ2luZyBidWZmZXIuCisgIHN0YWdpbmdCdWZm
ZXIuZGVzdHJveSgpOworCisgIHJldHVybiB0ZXh0dXJlOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS9sYXlvdXQuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC90ZXh0dXJlL2xheW91dC5q
cwppbmRleCBkZWM3ZjRkYWUwOTcuLjM3ZjZlYzg5MzIyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS9sYXlvdXQuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS9sYXlvdXQu
anMKQEAgLTEsNyArMSw3IEBACiAvKioKICAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9UIEVESVQu
IFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2dwdXdlYi9jdHMKICAqKi8gaW1wb3J0IHsgYXNz
ZXJ0LCBtZW1jcHkgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsKLWltcG9y
dCB7IGtUZXh0dXJlRm9ybWF0SW5mbyB9IGZyb20gJy4uLy4uL2NhcGFiaWxpdHlfaW5mby5qcyc7
CitpbXBvcnQgeyBrVGV4dHVyZUZvcm1hdEluZm8sIHJlc29sdmVQZXJBc3BlY3RGb3JtYXQgfSBm
cm9tICcuLi8uLi9jYXBhYmlsaXR5X2luZm8uanMnOwogaW1wb3J0IHsgYWxpZ24gfSBmcm9tICcu
Li9tYXRoLmpzJzsKIGltcG9ydCB7IHJlaWZ5RXh0ZW50M0QgfSBmcm9tICcuLi91bmlvbnMuanMn
OwogCkBAIC0xNiw3ICsxNiwxMiBAQCBleHBvcnQgY29uc3Qga0J1ZmZlckNvcHlBbGlnbm1lbnQg
PSA0OwogICogT3ZlcnJpZGFibGUgbGF5b3V0IG9wdGlvbnMgZm9yIHtAbGluayBnZXRUZXh0dXJl
Q29weUxheW91dH0uCiAgKi8KIAotY29uc3Qga0RlZmF1bHRMYXlvdXRPcHRpb25zID0geyBtaXBM
ZXZlbDogMCwgYnl0ZXNQZXJSb3c6IHVuZGVmaW5lZCwgcm93c1BlckltYWdlOiB1bmRlZmluZWQg
fTsKK2NvbnN0IGtEZWZhdWx0TGF5b3V0T3B0aW9ucyA9IHsKKyAgbWlwTGV2ZWw6IDAsCisgIGJ5
dGVzUGVyUm93OiB1bmRlZmluZWQsCisgIHJvd3NQZXJJbWFnZTogdW5kZWZpbmVkLAorICBhc3Bl
Y3Q6ICdhbGwnLAorfTsKIAogLyoqIFRoZSBpbmZvIHJldHVybmVkIGJ5IHtAbGluayBnZXRUZXh0
dXJlU3ViQ29weUxheW91dH0uICovCiAKQEAgLTMyLDcgKzM3LDcgQEAgZXhwb3J0IGZ1bmN0aW9u
IGdldFRleHR1cmVDb3B5TGF5b3V0KAogICBmb3JtYXQsCiAgIGRpbWVuc2lvbiwKICAgYmFzZVNp
emUsCi0gIHsgbWlwTGV2ZWwsIGJ5dGVzUGVyUm93LCByb3dzUGVySW1hZ2UgfSA9IGtEZWZhdWx0
TGF5b3V0T3B0aW9ucworICB7IG1pcExldmVsLCBieXRlc1BlclJvdywgcm93c1BlckltYWdlLCBh
c3BlY3QgfSA9IGtEZWZhdWx0TGF5b3V0T3B0aW9ucwogKSB7CiAgIGNvbnN0IG1pcFNpemUgPSBw
aHlzaWNhbE1pcFNpemUoCiAgICAgeyB3aWR0aDogYmFzZVNpemVbMF0sIGhlaWdodDogYmFzZVNp
emVbMV0sIGRlcHRoT3JBcnJheUxheWVyczogYmFzZVNpemVbMl0gfSwKQEAgLTQxLDcgKzQ2LDcg
QEAgZXhwb3J0IGZ1bmN0aW9uIGdldFRleHR1cmVDb3B5TGF5b3V0KAogICAgIG1pcExldmVsCiAg
ICk7CiAKLSAgY29uc3QgbGF5b3V0ID0gZ2V0VGV4dHVyZVN1YkNvcHlMYXlvdXQoZm9ybWF0LCBt
aXBTaXplLCB7IGJ5dGVzUGVyUm93LCByb3dzUGVySW1hZ2UgfSk7CisgIGNvbnN0IGxheW91dCA9
IGdldFRleHR1cmVTdWJDb3B5TGF5b3V0KGZvcm1hdCwgbWlwU2l6ZSwgeyBieXRlc1BlclJvdywg
cm93c1BlckltYWdlLCBhc3BlY3QgfSk7CiAgIHJldHVybiB7IC4uLmxheW91dCwgbWlwU2l6ZTog
W21pcFNpemUud2lkdGgsIG1pcFNpemUuaGVpZ2h0LCBtaXBTaXplLmRlcHRoT3JBcnJheUxheWVy
c10gfTsKIH0KIApAQCAtNTEsOCArNTYsMTQgQEAgZXhwb3J0IGZ1bmN0aW9uIGdldFRleHR1cmVD
b3B5TGF5b3V0KAogICoKICAqIENvbXB1dGVzIGRlZmF1bHQgdmFsdWVzIGZvciBgYnl0ZXNQZXJS
b3dgIGFuZCBgcm93c1BlckltYWdlYCBpZiBub3Qgc3BlY2lmaWVkLgogICovCi1leHBvcnQgZnVu
Y3Rpb24gZ2V0VGV4dHVyZVN1YkNvcHlMYXlvdXQoZm9ybWF0LCBjb3B5U2l6ZSwgeyBieXRlc1Bl
clJvdywgcm93c1BlckltYWdlIH0gPSB7fSkgeworZXhwb3J0IGZ1bmN0aW9uIGdldFRleHR1cmVT
dWJDb3B5TGF5b3V0KAorICBmb3JtYXQsCisgIGNvcHlTaXplLAorICB7IGJ5dGVzUGVyUm93LCBy
b3dzUGVySW1hZ2UsIGFzcGVjdCA9ICdhbGwnIH0gPSB7fQorKSB7CisgIGZvcm1hdCA9IHJlc29s
dmVQZXJBc3BlY3RGb3JtYXQoZm9ybWF0LCBhc3BlY3QpOwogICBjb25zdCB7IGJsb2NrV2lkdGgs
IGJsb2NrSGVpZ2h0LCBieXRlc1BlckJsb2NrIH0gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0
XTsKKyAgYXNzZXJ0KGJ5dGVzUGVyQmxvY2sgIT09IHVuZGVmaW5lZCk7CiAKICAgY29uc3QgY29w
eVNpemVfID0gcmVpZnlFeHRlbnQzRChjb3B5U2l6ZSk7CiAgIGFzc2VydCgKQEAgLTkyLDcgKzEw
Myw3IEBAIGV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0dXJlU3ViQ29weUxheW91dChmb3JtYXQsIGNv
cHlTaXplLCB7IGJ5dGVzUGVyUm93LCByb3dzUGVyCiAgIGNvbnN0IGJ5dGVMZW5ndGggPSBieXRl
c1BlclNsaWNlICogKGNvcHlTaXplQmxvY2tzLmRlcHRoT3JBcnJheUxheWVycyAtIDEpICsgc2xp
Y2VTaXplOwogCiAgIHJldHVybiB7Ci0gICAgYnl0ZXNQZXJCbG9jaywKKyAgICBieXRlc1BlckJs
b2NrOiBieXRlc1BlckJsb2NrLAogICAgIGJ5dGVMZW5ndGg6IGFsaWduKGJ5dGVMZW5ndGgsIGtC
dWZmZXJDb3B5QWxpZ25tZW50KSwKICAgICBtaW5CeXRlc1BlclJvdywKICAgICBieXRlc1BlclJv
dywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGls
L3RleHR1cmUvdGV4ZWxfZGF0YS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS91dGlsL3RleHR1cmUvdGV4ZWxfZGF0YS5qcwppbmRleCBkMTE1MDVmNWVjMzguLmJiODdh
MDM2NDNhMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3V0aWwvdGV4dHVyZS90ZXhlbF9kYXRhLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS91dGlsL3RleHR1cmUvdGV4ZWxfZGF0YS5qcwpAQCAtMTAsNyArMTAsMTYg
QEAgaW1wb3J0IHsKICAgZ2FtbWFEZWNvbXByZXNzLAogICBub3JtYWxpemVkSW50ZWdlckFzRmxv
YXQsCiAgIHBhY2tSR0I5RTVVRmxvYXQsCisgIGZsb2F0Qml0c1RvTnVtYmVyLAorICBmbG9hdDE2
Qml0c1RvRmxvYXQzMiwKKyAgZmxvYXRCaXRzVG9Ob3JtYWxVTFBGcm9tWmVybywKKyAga0Zsb2F0
MzJGb3JtYXQsCisgIGtGbG9hdDE2Rm9ybWF0LAorICBudW1iZXJUb0Zsb2F0MzJCaXRzLAorICBm
bG9hdDMyQml0c1RvTnVtYmVyLAorICBudW1iZXJUb0Zsb2F0Qml0cywKIH0gZnJvbSAnLi4vY29u
dmVyc2lvbi5qcyc7CitpbXBvcnQgeyBjbGFtcCwgc2lnbkV4dGVuZCB9IGZyb20gJy4uL21hdGgu
anMnOwogCiAvKiogQSBjb21wb25lbnQgb2YgYSB0ZXh0dXJlIGZvcm1hdDogUiwgRywgQiwgQSwg
RGVwdGgsIG9yIFN0ZW5jaWwuICovCiBleHBvcnQgbGV0IFRleGVsQ29tcG9uZW50OwpAQCAtODYs
NiArOTUsMTUgQEAgY29uc3QgZGVjb2RlU1JHQiA9IGNvbXBvbmVudHMgPT4gewogICByZXR1cm4g
YXBwbHlFYWNoKGdhbW1hRGVjb21wcmVzcywga1JHQikoY29tcG9uZW50cyk7CiB9OwogCisvKioK
KyAqIE1ha2VzIGEgYENvbXBvbmVudE1hcEZuYCBmb3IgY2xhbXBpbmcgdmFsdWVzIHRvIHRoZSBz
cGVjaWZpZWQgcmFuZ2UuCisgKi8KK2V4cG9ydCBmdW5jdGlvbiBtYWtlQ2xhbXBUb1JhbmdlKGZv
cm1hdCkgeworICBjb25zdCByZXByID0ga1RleGVsUmVwcmVzZW50YXRpb25JbmZvW2Zvcm1hdF07
CisgIGFzc2VydChyZXByLm51bWVyaWNSYW5nZSAhPT0gbnVsbCwgJ0Zvcm1hdCBoYXMgdW5rbm93
biBudW1lcmljUmFuZ2UnKTsKKyAgcmV0dXJuIGFwcGx5RWFjaCh4ID0+IGNsYW1wKHgsIHJlcHIu
bnVtZXJpY1JhbmdlKSwgcmVwci5jb21wb25lbnRPcmRlcik7Cit9CisKIC8qKgogICogSGVscGVy
IGZ1bmN0aW9uIHRvIHBhY2sgY29tcG9uZW50cyBhcyBhbiBBcnJheUJ1ZmZlci4KICAqIEBwYXJh
bSB7VGV4ZWxDb21wb25lbnRbXX0gY29tcG9uZW50T3JkZXIgLSBUaGUgb3JkZXIgb2YgdGhlIGNv
bXBvbmVudCBkYXRhLgpAQCAtMjA3LDYgKzIyNSw2MiBAQCBmdW5jdGlvbiBwYWNrQ29tcG9uZW50
cyhjb21wb25lbnRPcmRlciwgY29tcG9uZW50cywgYml0TGVuZ3RocywgY29tcG9uZW50RGF0YVR5
cAogICByZXR1cm4gZGF0YTsKIH0KIAorLyoqCisgKiBVbnBhY2sgc3Vic3RyaW5ncyBvZiBiaXRz
IGZyb20gYSBVaW50OEFycmF5LCBlLmcuIFs4LDgsOCw4XSBvciBbOSw5LDksNV0uCisgKgorICog
TUFJTlRFTkFOQ0VfVE9ETzogUHJldHR5IHNsb3cuIENvdWxkIHNpZ25pZmljYW50bHkgb3B0aW1p
emUgd2hlbiBgYml0TGVuZ3Roc2AgaXMgOCwgMTYsIG9yIDMyLgorICovCitmdW5jdGlvbiB1bnBh
Y2tDb21wb25lbnRzQml0cyhjb21wb25lbnRPcmRlciwgYnl0ZVZpZXcsIGJpdExlbmd0aHMpIHsK
KyAgY29uc3QgYml0TGVuZ3RoTWFwID0KKyAgICB0eXBlb2YgYml0TGVuZ3RocyA9PT0gJ251bWJl
cicgPyBtYWtlUGVyVGV4ZWxDb21wb25lbnQoY29tcG9uZW50T3JkZXIsIGJpdExlbmd0aHMpIDog
Yml0TGVuZ3RoczsKKworICBjb25zdCB0b3RhbEJpdExlbmd0aCA9IE9iamVjdC5lbnRyaWVzKGJp
dExlbmd0aE1hcCkucmVkdWNlKChhY2MsIFssIHZhbHVlXSkgPT4geworICAgIGFzc2VydCh2YWx1
ZSAhPT0gdW5kZWZpbmVkKTsKKyAgICByZXR1cm4gYWNjICsgdmFsdWU7CisgIH0sIDApOworICBh
c3NlcnQodG90YWxCaXRMZW5ndGggJSA4ID09PSAwKTsKKworICBjb25zdCBjb21wb25lbnRzID0g
bWFrZVBlclRleGVsQ29tcG9uZW50KGNvbXBvbmVudE9yZGVyLCAwKTsKKyAgbGV0IGJpdE9mZnNl
dCA9IDA7CisgIGZvciAoY29uc3QgYyBvZiBjb21wb25lbnRPcmRlcikgeworICAgIGNvbnN0IGJp
dExlbmd0aCA9IGJpdExlbmd0aE1hcFtjXTsKKyAgICBhc3NlcnQoYml0TGVuZ3RoICE9PSB1bmRl
ZmluZWQpOworCisgICAgbGV0IHZhbHVlOworCisgICAgY29uc3QgYnl0ZU9mZnNldCA9IE1hdGgu
Zmxvb3IoYml0T2Zmc2V0IC8gOCk7CisgICAgY29uc3QgYnl0ZUxlbmd0aCA9IE1hdGguY2VpbChi
aXRMZW5ndGggLyA4KTsKKyAgICBpZiAoYnl0ZU9mZnNldCA9PT0gYml0T2Zmc2V0IC8gOCAmJiBi
eXRlTGVuZ3RoID09PSBiaXRMZW5ndGggLyA4KSB7CisgICAgICBjb25zdCBkYXRhVmlldyA9IG5l
dyBEYXRhVmlldyhieXRlVmlldy5idWZmZXIsIGJ5dGVWaWV3LmJ5dGVPZmZzZXQgKyBieXRlT2Zm
c2V0LCBieXRlTGVuZ3RoKTsKKyAgICAgIHN3aXRjaCAoYnl0ZUxlbmd0aCkgeworICAgICAgICBj
YXNlIDE6CisgICAgICAgICAgdmFsdWUgPSBkYXRhVmlldy5nZXRVaW50OCgwKTsKKyAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgIHZhbHVlID0gZGF0YVZpZXcuZ2V0
VWludDE2KDAsIHRydWUpOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgdmFsdWUgPSBkYXRhVmlldy5nZXRVaW50MzIoMCwgdHJ1ZSk7CisgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgdW5yZWFjaGFibGUoKTsKKyAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgLy8gUGFja2VkIHJlcHJlc2VudGF0aW9ucyBhcmUgYWxsIDMy
LWJpdCBhbmQgdXNlIFVpbnQgYXMgdGhlIGRhdGEgdHlwZS4KKyAgICAgIC8vIGV4LikgcmcxMGIx
MWZsb2F0LCByZ2IxMGEydW5vcm0KKyAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnl0
ZVZpZXcuYnVmZmVyLCBieXRlVmlldy5ieXRlT2Zmc2V0LCBieXRlVmlldy5ieXRlTGVuZ3RoKTsK
KyAgICAgIGFzc2VydCh2aWV3LmJ5dGVMZW5ndGggPT09IDQpOworICAgICAgY29uc3Qgd29yZCA9
IHZpZXcuZ2V0VWludDMyKDAsIHRydWUpOworICAgICAgdmFsdWUgPSAod29yZCA+Pj4gYml0T2Zm
c2V0KSAmICgoMSA8PCBiaXRMZW5ndGgpIC0gMSk7CisgICAgfQorCisgICAgYml0T2Zmc2V0ICs9
IGJpdExlbmd0aDsKKyAgICBjb21wb25lbnRzW2NdID0gdmFsdWU7CisgIH0KKworICByZXR1cm4g
Y29tcG9uZW50czsKK30KKwogLyoqCiAgKiBDcmVhdGUgYW4gZW50cnkgaW4gYGtUZXhlbFJlcHJl
c2VudGF0aW9uSW5mb2AgZm9yIG5vcm1hbGl6ZWQgaW50ZWdlciB0ZXhlbCBkYXRhIHdpdGggY29u
c3RhbnQKICAqIGJpdGxlbmd0aC4KQEAgLTIyNSwxNCArMjk5LDQ5IEBAIGZ1bmN0aW9uIG1ha2VO
b3JtYWxpemVkSW5mbyhjb21wb25lbnRPcmRlciwgYml0TGVuZ3RoLCBvcHQpIHsKICAgICBjb21w
b25lbnRPcmRlcgogICApOwogCisgIGNvbnN0IG51bWJlclRvQml0c05vblNSR0IgPSBhcHBseUVh
Y2goCisgICAgbiA9PiBmbG9hdEFzTm9ybWFsaXplZEludGVnZXIobiwgYml0TGVuZ3RoLCBvcHQu
c2lnbmVkKSwKKyAgICBjb21wb25lbnRPcmRlcgorICApOworCisgIGxldCBiaXRzVG9OdW1iZXJO
b25TUkdCOworICBpZiAob3B0LnNpZ25lZCkgeworICAgIGJpdHNUb051bWJlck5vblNSR0IgPSBh
cHBseUVhY2goCisgICAgICBuID0+IG5vcm1hbGl6ZWRJbnRlZ2VyQXNGbG9hdChzaWduRXh0ZW5k
KG4sIGJpdExlbmd0aCksIGJpdExlbmd0aCwgb3B0LnNpZ25lZCksCisgICAgICBjb21wb25lbnRP
cmRlcgorICAgICk7CisgIH0gZWxzZSB7CisgICAgYml0c1RvTnVtYmVyTm9uU1JHQiA9IGFwcGx5
RWFjaCgKKyAgICAgIG4gPT4gbm9ybWFsaXplZEludGVnZXJBc0Zsb2F0KG4sIGJpdExlbmd0aCwg
b3B0LnNpZ25lZCksCisgICAgICBjb21wb25lbnRPcmRlcgorICAgICk7CisgIH0KKwogICBsZXQg
ZW5jb2RlOwogICBsZXQgZGVjb2RlOworICBsZXQgbnVtYmVyVG9CaXRzOworICBsZXQgYml0c1Rv
TnVtYmVyOwogICBpZiAob3B0LnNSR0IpIHsKICAgICBlbmNvZGUgPSBjb21wb25lbnRzID0+IGVu
Y29kZU5vblNSR0IoZW5jb2RlU1JHQihjb21wb25lbnRzKSk7CiAgICAgZGVjb2RlID0gY29tcG9u
ZW50cyA9PiBkZWNvZGVTUkdCKGRlY29kZU5vblNSR0IoY29tcG9uZW50cykpOworICAgIG51bWJl
clRvQml0cyA9IGNvbXBvbmVudHMgPT4gbnVtYmVyVG9CaXRzTm9uU1JHQihlbmNvZGVTUkdCKGNv
bXBvbmVudHMpKTsKKyAgICBiaXRzVG9OdW1iZXIgPSBjb21wb25lbnRzID0+IGRlY29kZVNSR0Io
Yml0c1RvTnVtYmVyTm9uU1JHQihjb21wb25lbnRzKSk7CiAgIH0gZWxzZSB7CiAgICAgZW5jb2Rl
ID0gZW5jb2RlTm9uU1JHQjsKICAgICBkZWNvZGUgPSBkZWNvZGVOb25TUkdCOworICAgIG51bWJl
clRvQml0cyA9IG51bWJlclRvQml0c05vblNSR0I7CisgICAgYml0c1RvTnVtYmVyID0gYml0c1Rv
TnVtYmVyTm9uU1JHQjsKKyAgfQorCisgIGxldCBiaXRzVG9VTFBGcm9tWmVybzsKKyAgaWYgKG9w
dC5zaWduZWQpIHsKKyAgICBjb25zdCBtYXhWYWx1ZSA9ICgxIDw8IChiaXRMZW5ndGggLSAxKSkg
LSAxOyAvLyBlLmcuIDEyNyBmb3Igc25vcm04CisgICAgYml0c1RvVUxQRnJvbVplcm8gPSBhcHBs
eUVhY2goCisgICAgICBuID0+IE1hdGgubWF4KC1tYXhWYWx1ZSwgc2lnbkV4dGVuZChuLCBiaXRM
ZW5ndGgpKSwKKyAgICAgIGNvbXBvbmVudE9yZGVyCisgICAgKTsKKyAgfSBlbHNlIHsKKyAgICBi
aXRzVG9VTFBGcm9tWmVybyA9IGNvbXBvbmVudHMgPT4gY29tcG9uZW50czsKICAgfQogCiAgIGNv
bnN0IGRhdGFUeXBlID0gb3B0LnNpZ25lZCA/ICdzbm9ybScgOiAndW5vcm0nOwpAQCAtMjQ2LDYg
KzM1NSwxMSBAQCBmdW5jdGlvbiBtYWtlTm9ybWFsaXplZEluZm8oY29tcG9uZW50T3JkZXIsIGJp
dExlbmd0aCwgb3B0KSB7CiAgICAgZW5jb2RlLAogICAgIGRlY29kZSwKICAgICBwYWNrOiBjb21w
b25lbnRzID0+IHBhY2tDb21wb25lbnRzKGNvbXBvbmVudE9yZGVyLCBjb21wb25lbnRzLCBiaXRM
ZW5ndGgsIGRhdGFUeXBlKSwKKyAgICB1bnBhY2tCaXRzOiBkYXRhID0+IHVucGFja0NvbXBvbmVu
dHNCaXRzKGNvbXBvbmVudE9yZGVyLCBkYXRhLCBiaXRMZW5ndGgpLAorICAgIG51bWJlclRvQml0
cywKKyAgICBiaXRzVG9OdW1iZXIsCisgICAgYml0c1RvVUxQRnJvbVplcm8sCisgICAgbnVtZXJp
Y1JhbmdlOiB7IG1pbjogb3B0LnNpZ25lZCA/IC0xIDogMCwgbWF4OiAxIH0sCiAgIH07CiB9CiAK
QEAgLTI1Niw2ICszNzAsNyBAQCBmdW5jdGlvbiBtYWtlTm9ybWFsaXplZEluZm8oY29tcG9uZW50
T3JkZXIsIGJpdExlbmd0aCwgb3B0KSB7CiAgKiBAcGFyYW0ge3tzaWduZWQ6IGJvb2xlYW59fSBv
cHQgLSBCb29sZWFuIGZsYWcgZm9yIGBzaWduZWRgLgogICovCiBmdW5jdGlvbiBtYWtlSW50ZWdl
ckluZm8oY29tcG9uZW50T3JkZXIsIGJpdExlbmd0aCwgb3B0KSB7CisgIGFzc2VydChiaXRMZW5n
dGggPD0gMzIpOwogICBjb25zdCBlbmNvZGUgPSBhcHBseUVhY2goCiAgICAgbiA9PiAoYXNzZXJ0
SW5JbnRlZ2VyUmFuZ2UobiwgYml0TGVuZ3RoLCBvcHQuc2lnbmVkKSwgbiksCiAgICAgY29tcG9u
ZW50T3JkZXIKQEAgLTI2Niw3ICszODEsMTUgQEAgZnVuY3Rpb24gbWFrZUludGVnZXJJbmZvKGNv
bXBvbmVudE9yZGVyLCBiaXRMZW5ndGgsIG9wdCkgewogICAgIGNvbXBvbmVudE9yZGVyCiAgICk7
CiAKKyAgbGV0IGJpdHNUb1VMUEZyb21aZXJvOworICBpZiAob3B0LnNpZ25lZCkgeworICAgIGJp
dHNUb1VMUEZyb21aZXJvID0gYXBwbHlFYWNoKG4gPT4gc2lnbkV4dGVuZChuLCBiaXRMZW5ndGgp
LCBjb21wb25lbnRPcmRlcik7CisgIH0gZWxzZSB7CisgICAgYml0c1RvVUxQRnJvbVplcm8gPSBj
b21wb25lbnRzID0+IGNvbXBvbmVudHM7CisgIH0KKwogICBjb25zdCBkYXRhVHlwZSA9IG9wdC5z
aWduZWQgPyAnc2ludCcgOiAndWludCc7CisgIGNvbnN0IGJpdE1hc2sgPSAoMSA8PCBiaXRMZW5n
dGgpIC0gMTsKICAgcmV0dXJuIHsKICAgICBjb21wb25lbnRPcmRlciwKICAgICBjb21wb25lbnRJ
bmZvOiBtYWtlUGVyVGV4ZWxDb21wb25lbnQoY29tcG9uZW50T3JkZXIsIHsKQEAgLTI3Nyw2ICs0
MDAsMTMgQEAgZnVuY3Rpb24gbWFrZUludGVnZXJJbmZvKGNvbXBvbmVudE9yZGVyLCBiaXRMZW5n
dGgsIG9wdCkgewogICAgIGVuY29kZSwKICAgICBkZWNvZGUsCiAgICAgcGFjazogY29tcG9uZW50
cyA9PiBwYWNrQ29tcG9uZW50cyhjb21wb25lbnRPcmRlciwgY29tcG9uZW50cywgYml0TGVuZ3Ro
LCBkYXRhVHlwZSksCisgICAgdW5wYWNrQml0czogZGF0YSA9PiB1bnBhY2tDb21wb25lbnRzQml0
cyhjb21wb25lbnRPcmRlciwgZGF0YSwgYml0TGVuZ3RoKSwKKyAgICBudW1iZXJUb0JpdHM6IGFw
cGx5RWFjaCh2ID0+IHYgJiBiaXRNYXNrLCBjb21wb25lbnRPcmRlciksCisgICAgYml0c1RvTnVt
YmVyOiBkZWNvZGUsCisgICAgYml0c1RvVUxQRnJvbVplcm8sCisgICAgbnVtZXJpY1JhbmdlOiBv
cHQuc2lnbmVkCisgICAgICA/IHsgbWluOiAtKDIgKiogKGJpdExlbmd0aCAtIDEpKSwgbWF4OiAy
ICoqIChiaXRMZW5ndGggLSAxKSAtIDEgfQorICAgICAgOiB7IG1pbjogMCwgbWF4OiAyICoqIGJp
dExlbmd0aCAtIDEgfSwKICAgfTsKIH0KIApAQCAtMjg2LDkgKzQxNiw1MCBAQCBmdW5jdGlvbiBt
YWtlSW50ZWdlckluZm8oY29tcG9uZW50T3JkZXIsIGJpdExlbmd0aCwgb3B0KSB7CiAgKiBAcGFy
YW0ge1RleGVsQ29tcG9uZW50W119IGNvbXBvbmVudE9yZGVyIC0gVGhlIG9yZGVyIG9mIHRoZSBj
b21wb25lbnQgZGF0YS4KICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRMZW5ndGggLSBUaGUgbnVtYmVy
IG9mIGJpdHMgaW4gZWFjaCBjb21wb25lbnQuCiAgKi8KLWZ1bmN0aW9uIG1ha2VGbG9hdEluZm8o
Y29tcG9uZW50T3JkZXIsIGJpdExlbmd0aCkgewotICAvLyBNQUlOVEVOQU5DRV9UT0RPOiBVc2Ug
fGJpdExlbmd0aHwgdG8gcm91bmQgZmxvYXQgdmFsdWVzIGJhc2VkIG9uIHByZWNpc2lvbi4KLSAg
Y29uc3QgZW5jb2RlID0gYXBwbHlFYWNoKGlkZW50aXR5LCBjb21wb25lbnRPcmRlcik7CitmdW5j
dGlvbiBtYWtlRmxvYXRJbmZvKGNvbXBvbmVudE9yZGVyLCBiaXRMZW5ndGgsIHsgcmVzdHJpY3Rl
ZERlcHRoID0gZmFsc2UgfSA9IHt9KSB7CisgIGxldCBlbmNvZGU7CisgIGxldCBudW1iZXJUb0Jp
dHM7CisgIGxldCBiaXRzVG9OdW1iZXI7CisgIGxldCBiaXRzVG9VTFBGcm9tWmVybzsKKyAgc3dp
dGNoIChiaXRMZW5ndGgpIHsKKyAgICBjYXNlIDMyOgorICAgICAgaWYgKHJlc3RyaWN0ZWREZXB0
aCkgeworICAgICAgICBlbmNvZGUgPSBhcHBseUVhY2godiA9PiB7CisgICAgICAgICAgYXNzZXJ0
KHYgPj0gMC4wICYmIHYgPD0gMS4wLCAnZGVwdGggb3V0IG9mIHJhbmdlJyk7CisgICAgICAgICAg
cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoW3ZdKVswXTsKKyAgICAgICAgfSwgY29tcG9uZW50T3Jk
ZXIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZW5jb2RlID0gYXBwbHlFYWNoKHYgPT4gbmV3
IEZsb2F0MzJBcnJheShbdl0pWzBdLCBjb21wb25lbnRPcmRlcik7CisgICAgICB9CisgICAgICBu
dW1iZXJUb0JpdHMgPSBhcHBseUVhY2gobnVtYmVyVG9GbG9hdDMyQml0cywgY29tcG9uZW50T3Jk
ZXIpOworICAgICAgYml0c1RvTnVtYmVyID0gYXBwbHlFYWNoKGZsb2F0MzJCaXRzVG9OdW1iZXIs
IGNvbXBvbmVudE9yZGVyKTsKKyAgICAgIGJpdHNUb1VMUEZyb21aZXJvID0gYXBwbHlFYWNoKAor
ICAgICAgICB2ID0+IGZsb2F0Qml0c1RvTm9ybWFsVUxQRnJvbVplcm8odiwga0Zsb2F0MzJGb3Jt
YXQpLAorICAgICAgICBjb21wb25lbnRPcmRlcgorICAgICAgKTsKKworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAxNjoKKyAgICAgIGlmIChyZXN0cmljdGVkRGVwdGgpIHsKKyAgICAgICAgZW5jb2Rl
ID0gYXBwbHlFYWNoKHYgPT4geworICAgICAgICAgIGFzc2VydCh2ID49IDAuMCAmJiB2IDw9IDEu
MCwgJ2RlcHRoIG91dCBvZiByYW5nZScpOworICAgICAgICAgIHJldHVybiBmbG9hdDE2Qml0c1Rv
RmxvYXQzMihmbG9hdDMyVG9GbG9hdDE2Qml0cyh2KSk7CisgICAgICAgIH0sIGNvbXBvbmVudE9y
ZGVyKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGVuY29kZSA9IGFwcGx5RWFjaCh2ID0+IGZs
b2F0MTZCaXRzVG9GbG9hdDMyKGZsb2F0MzJUb0Zsb2F0MTZCaXRzKHYpKSwgY29tcG9uZW50T3Jk
ZXIpOworICAgICAgfQorICAgICAgbnVtYmVyVG9CaXRzID0gYXBwbHlFYWNoKGZsb2F0MzJUb0Zs
b2F0MTZCaXRzLCBjb21wb25lbnRPcmRlcik7CisgICAgICBiaXRzVG9OdW1iZXIgPSBhcHBseUVh
Y2goZmxvYXQxNkJpdHNUb0Zsb2F0MzIsIGNvbXBvbmVudE9yZGVyKTsKKyAgICAgIGJpdHNUb1VM
UEZyb21aZXJvID0gYXBwbHlFYWNoKAorICAgICAgICB2ID0+IGZsb2F0Qml0c1RvTm9ybWFsVUxQ
RnJvbVplcm8odiwga0Zsb2F0MTZGb3JtYXQpLAorICAgICAgICBjb21wb25lbnRPcmRlcgorICAg
ICAgKTsKKworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIHVucmVhY2hhYmxlKCk7
CisgIH0KKwogICBjb25zdCBkZWNvZGUgPSBhcHBseUVhY2goaWRlbnRpdHksIGNvbXBvbmVudE9y
ZGVyKTsKIAogICByZXR1cm4gewpAQCAtMzAzLDcgKzQ3NCw3IEBAIGZ1bmN0aW9uIG1ha2VGbG9h
dEluZm8oY29tcG9uZW50T3JkZXIsIGJpdExlbmd0aCkgewogICAgIHBhY2s6IGNvbXBvbmVudHMg
PT4gewogICAgICAgc3dpdGNoIChiaXRMZW5ndGgpIHsKICAgICAgICAgY2FzZSAxNjoKLSAgICAg
ICAgICBjb21wb25lbnRzID0gYXBwbHlFYWNoKG4gPT4gZmxvYXQzMlRvRmxvYXQxNkJpdHMobiks
IGNvbXBvbmVudE9yZGVyKShjb21wb25lbnRzKTsKKyAgICAgICAgICBjb21wb25lbnRzID0gYXBw
bHlFYWNoKGZsb2F0MzJUb0Zsb2F0MTZCaXRzLCBjb21wb25lbnRPcmRlcikoY29tcG9uZW50cyk7
CiAgICAgICAgICAgcmV0dXJuIHBhY2tDb21wb25lbnRzKGNvbXBvbmVudE9yZGVyLCBjb21wb25l
bnRzLCAxNiwgJ3VpbnQnKTsKICAgICAgICAgY2FzZSAzMjoKICAgICAgICAgICByZXR1cm4gcGFj
a0NvbXBvbmVudHMoY29tcG9uZW50T3JkZXIsIGNvbXBvbmVudHMsIGJpdExlbmd0aCwgJ2Zsb2F0
Jyk7CkBAIC0zMTEsNiArNDgyLDEzIEBAIGZ1bmN0aW9uIG1ha2VGbG9hdEluZm8oY29tcG9uZW50
T3JkZXIsIGJpdExlbmd0aCkgewogICAgICAgICAgIHVucmVhY2hhYmxlKCk7CiAgICAgICB9CiAg
ICAgfSwKKyAgICB1bnBhY2tCaXRzOiBkYXRhID0+IHVucGFja0NvbXBvbmVudHNCaXRzKGNvbXBv
bmVudE9yZGVyLCBkYXRhLCBiaXRMZW5ndGgpLAorICAgIG51bWJlclRvQml0cywKKyAgICBiaXRz
VG9OdW1iZXIsCisgICAgYml0c1RvVUxQRnJvbVplcm8sCisgICAgbnVtZXJpY1JhbmdlOiByZXN0
cmljdGVkRGVwdGgKKyAgICAgID8geyBtaW46IDAsIG1heDogMSB9CisgICAgICA6IHsgbWluOiBO
dW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIG1heDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIH0s
CiAgIH07CiB9CiAKQEAgLTMyMiw2ICs1MDAsMTAgQEAgY29uc3Qga0JHUkEgPSBbVGV4ZWxDb21w
b25lbnQuQiwgVGV4ZWxDb21wb25lbnQuRywgVGV4ZWxDb21wb25lbnQuUiwgVGV4ZWxDb21wb24K
IAogY29uc3QgaWRlbnRpdHkgPSBuID0+IG47CiAKK2NvbnN0IGtGbG9hdDExRm9ybWF0ID0geyBz
aWduZWQ6IDAsIGV4cG9uZW50Qml0czogNSwgbWFudGlzc2FCaXRzOiA2LCBiaWFzOiAxNSB9Owor
Y29uc3Qga0Zsb2F0MTBGb3JtYXQgPSB7IHNpZ25lZDogMCwgZXhwb25lbnRCaXRzOiA1LCBtYW50
aXNzYUJpdHM6IDUsIGJpYXM6IDE1IH07Citjb25zdCBrRmxvYXQ5ZTVGb3JtYXQgPSB7IHNpZ25l
ZDogMCwgZXhwb25lbnRCaXRzOiA1LCBtYW50aXNzYUJpdHM6IDksIGJpYXM6IDE1IH07CisKIGV4
cG9ydCBjb25zdCBrVGV4ZWxSZXByZXNlbnRhdGlvbkluZm8gPSB7CiAgIC4uLnsKICAgICByOHVu
b3JtOiBtYWtlTm9ybWFsaXplZEluZm8oa1IsIDgsIHsgc2lnbmVkOiBmYWxzZSwgc1JHQjogZmFs
c2UgfSksCkBAIC0zOTgsNiArNTgwLDI0IEBAIGV4cG9ydCBjb25zdCBrVGV4ZWxSZXByZXNlbnRh
dGlvbkluZm8gPSB7CiAKICAgICAgICAgICAndWludCcKICAgICAgICAgKSwKKworICAgICAgdW5w
YWNrQml0czogZGF0YSA9PiB1bnBhY2tDb21wb25lbnRzQml0cyhrUkdCQSwgZGF0YSwgeyBSOiAx
MCwgRzogMTAsIEI6IDEwLCBBOiAyIH0pLAorICAgICAgbnVtYmVyVG9CaXRzOiBjb21wb25lbnRz
ID0+ICh7CisgICAgICAgIFI6IGZsb2F0QXNOb3JtYWxpemVkSW50ZWdlcihjb21wb25lbnRzLlIg
Pz8gdW5yZWFjaGFibGUoKSwgMTAsIGZhbHNlKSwKKyAgICAgICAgRzogZmxvYXRBc05vcm1hbGl6
ZWRJbnRlZ2VyKGNvbXBvbmVudHMuRyA/PyB1bnJlYWNoYWJsZSgpLCAxMCwgZmFsc2UpLAorICAg
ICAgICBCOiBmbG9hdEFzTm9ybWFsaXplZEludGVnZXIoY29tcG9uZW50cy5CID8/IHVucmVhY2hh
YmxlKCksIDEwLCBmYWxzZSksCisgICAgICAgIEE6IGZsb2F0QXNOb3JtYWxpemVkSW50ZWdlcihj
b21wb25lbnRzLkEgPz8gdW5yZWFjaGFibGUoKSwgMiwgZmFsc2UpLAorICAgICAgfSksCisKKyAg
ICAgIGJpdHNUb051bWJlcjogY29tcG9uZW50cyA9PiAoeworICAgICAgICBSOiBub3JtYWxpemVk
SW50ZWdlckFzRmxvYXQoY29tcG9uZW50cy5SLCAxMCwgZmFsc2UpLAorICAgICAgICBHOiBub3Jt
YWxpemVkSW50ZWdlckFzRmxvYXQoY29tcG9uZW50cy5HLCAxMCwgZmFsc2UpLAorICAgICAgICBC
OiBub3JtYWxpemVkSW50ZWdlckFzRmxvYXQoY29tcG9uZW50cy5CLCAxMCwgZmFsc2UpLAorICAg
ICAgICBBOiBub3JtYWxpemVkSW50ZWdlckFzRmxvYXQoY29tcG9uZW50cy5BLCAyLCBmYWxzZSks
CisgICAgICB9KSwKKworICAgICAgYml0c1RvVUxQRnJvbVplcm86IGNvbXBvbmVudHMgPT4gY29t
cG9uZW50cywKKyAgICAgIG51bWVyaWNSYW5nZTogeyBtaW46IDAsIG1heDogMSB9LAogICAgIH0s
CiAKICAgICByZzExYjEwdWZsb2F0OiB7CkBAIC00MTEsNyArNjExLDcgQEAgZXhwb3J0IGNvbnN0
IGtUZXhlbFJlcHJlc2VudGF0aW9uSW5mbyA9IHsKICAgICAgIH0sCiAKICAgICAgIHBhY2s6IGNv
bXBvbmVudHMgPT4gewotICAgICAgICBjb21wb25lbnRzID0geworICAgICAgICBjb25zdCBjb21w
b25lbnRzQml0cyA9IHsKICAgICAgICAgICBSOiBmbG9hdDMyVG9GbG9hdEJpdHMoY29tcG9uZW50
cy5SID8/IHVucmVhY2hhYmxlKCksIDAsIDUsIDYsIDE1KSwKICAgICAgICAgICBHOiBmbG9hdDMy
VG9GbG9hdEJpdHMoY29tcG9uZW50cy5HID8/IHVucmVhY2hhYmxlKCksIDAsIDUsIDYsIDE1KSwK
ICAgICAgICAgICBCOiBmbG9hdDMyVG9GbG9hdEJpdHMoY29tcG9uZW50cy5CID8/IHVucmVhY2hh
YmxlKCksIDAsIDUsIDUsIDE1KSwKQEAgLTQxOSw3ICs2MTksNyBAQCBleHBvcnQgY29uc3Qga1Rl
eGVsUmVwcmVzZW50YXRpb25JbmZvID0gewogCiAgICAgICAgIHJldHVybiBwYWNrQ29tcG9uZW50
cygKICAgICAgICAgICBrUkdCLAotICAgICAgICAgIGNvbXBvbmVudHMsCisgICAgICAgICAgY29t
cG9uZW50c0JpdHMsCiAgICAgICAgICAgewogICAgICAgICAgICAgUjogMTEsCiAgICAgICAgICAg
ICBHOiAxMSwKQEAgLTQyOSw2ICs2MjksMjYgQEAgZXhwb3J0IGNvbnN0IGtUZXhlbFJlcHJlc2Vu
dGF0aW9uSW5mbyA9IHsKICAgICAgICAgICAndWludCcKICAgICAgICAgKTsKICAgICAgIH0sCisg
ICAgICB1bnBhY2tCaXRzOiBkYXRhID0+IHVucGFja0NvbXBvbmVudHNCaXRzKGtSR0IsIGRhdGEs
IHsgUjogMTEsIEc6IDExLCBCOiAxMCB9KSwKKyAgICAgIG51bWJlclRvQml0czogY29tcG9uZW50
cyA9PiAoeworICAgICAgICBSOiBudW1iZXJUb0Zsb2F0Qml0cyhjb21wb25lbnRzLlIgPz8gdW5y
ZWFjaGFibGUoKSwga0Zsb2F0MTFGb3JtYXQpLAorICAgICAgICBHOiBudW1iZXJUb0Zsb2F0Qml0
cyhjb21wb25lbnRzLkcgPz8gdW5yZWFjaGFibGUoKSwga0Zsb2F0MTFGb3JtYXQpLAorICAgICAg
ICBCOiBudW1iZXJUb0Zsb2F0Qml0cyhjb21wb25lbnRzLkIgPz8gdW5yZWFjaGFibGUoKSwga0Zs
b2F0MTBGb3JtYXQpLAorICAgICAgfSksCisKKyAgICAgIGJpdHNUb051bWJlcjogY29tcG9uZW50
cyA9PiAoeworICAgICAgICBSOiBmbG9hdEJpdHNUb051bWJlcihjb21wb25lbnRzLlIsIGtGbG9h
dDExRm9ybWF0KSwKKyAgICAgICAgRzogZmxvYXRCaXRzVG9OdW1iZXIoY29tcG9uZW50cy5HLCBr
RmxvYXQxMUZvcm1hdCksCisgICAgICAgIEI6IGZsb2F0Qml0c1RvTnVtYmVyKGNvbXBvbmVudHMu
Qiwga0Zsb2F0MTBGb3JtYXQpLAorICAgICAgfSksCisKKyAgICAgIGJpdHNUb1VMUEZyb21aZXJv
OiBjb21wb25lbnRzID0+ICh7CisgICAgICAgIFI6IGZsb2F0Qml0c1RvTm9ybWFsVUxQRnJvbVpl
cm8oY29tcG9uZW50cy5SLCBrRmxvYXQxMUZvcm1hdCksCisgICAgICAgIEc6IGZsb2F0Qml0c1Rv
Tm9ybWFsVUxQRnJvbVplcm8oY29tcG9uZW50cy5HLCBrRmxvYXQxMUZvcm1hdCksCisgICAgICAg
IEI6IGZsb2F0Qml0c1RvTm9ybWFsVUxQRnJvbVplcm8oY29tcG9uZW50cy5CLCBrRmxvYXQxMEZv
cm1hdCksCisgICAgICB9KSwKKworICAgICAgbnVtZXJpY1JhbmdlOiB7IG1pbjogMCwgbWF4OiBO
dW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfSwKICAgICB9LAogCiAgICAgcmdiOWU1dWZsb2F0OiB7
CkBAIC00NDcsMTYgKzY2NywzOCBAQCBleHBvcnQgY29uc3Qga1RleGVsUmVwcmVzZW50YXRpb25J
bmZvID0gewogICAgICAgICAgICAgY29tcG9uZW50cy5CID8/IHVucmVhY2hhYmxlKCkKICAgICAg
ICAgICApLAogICAgICAgICBdKS5idWZmZXIsCi0gICAgfSwKKyAgICAgIC8vIEZvciB0aGUgcHVy
cG9zZSBvZiB1bnBhY2tpbmcsIGV4cGFuZCBpbnRvIHRocmVlICJ1ZmxvYXQxNCIgdmFsdWVzLgor
ICAgICAgdW5wYWNrQml0czogZGF0YSA9PiB7CisgICAgICAgIC8vIFByZXRlbmQgdGhlIGV4cG9u
ZW50IHBhcnQgaXMgQSBzbyB3ZSBjYW4gdXNlIHVucGFja0NvbXBvbmVudHNCaXRzLgorICAgICAg
ICBjb25zdCBwYXJ0cyA9IHVucGFja0NvbXBvbmVudHNCaXRzKGtSR0JBLCBkYXRhLCB7IFI6IDks
IEc6IDksIEI6IDksIEE6IDUgfSk7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgUjogKHBh
cnRzLkEgPDwgOSkgfCBwYXJ0cy5SLAorICAgICAgICAgIEc6IChwYXJ0cy5BIDw8IDkpIHwgcGFy
dHMuRywKKyAgICAgICAgICBCOiAocGFydHMuQSA8PCA5KSB8IHBhcnRzLkIsCisgICAgICAgIH07
CisgICAgICB9LAorICAgICAgbnVtYmVyVG9CaXRzOiBjb21wb25lbnRzID0+ICh7CisgICAgICAg
IFI6IGZsb2F0MzJUb0Zsb2F0Qml0cyhjb21wb25lbnRzLlIgPz8gdW5yZWFjaGFibGUoKSwgMCwg
NSwgOSwgMTUpLAorICAgICAgICBHOiBmbG9hdDMyVG9GbG9hdEJpdHMoY29tcG9uZW50cy5HID8/
IHVucmVhY2hhYmxlKCksIDAsIDUsIDksIDE1KSwKKyAgICAgICAgQjogZmxvYXQzMlRvRmxvYXRC
aXRzKGNvbXBvbmVudHMuQiA/PyB1bnJlYWNoYWJsZSgpLCAwLCA1LCA5LCAxNSksCisgICAgICB9
KSwKIAotICAgIGRlcHRoMzJmbG9hdDogewotICAgICAgY29tcG9uZW50T3JkZXI6IFtUZXhlbENv
bXBvbmVudC5EZXB0aF0sCi0gICAgICBlbmNvZGU6IGFwcGx5RWFjaChuID0+IChhc3NlcnQobiA+
PSAwICYmIG4gPD0gMS4wKSwgbiksIFtUZXhlbENvbXBvbmVudC5EZXB0aF0pLAotICAgICAgZGVj
b2RlOiBhcHBseUVhY2gobiA9PiAoYXNzZXJ0KG4gPj0gMCAmJiBuIDw9IDEuMCksIG4pLCBbVGV4
ZWxDb21wb25lbnQuRGVwdGhdKSwKLSAgICAgIGNvbXBvbmVudEluZm86IHsgRGVwdGg6IHsgZGF0
YVR5cGU6ICdmbG9hdCcsIGJpdExlbmd0aDogMzIgfSB9LAotICAgICAgcGFjazogY29tcG9uZW50
cyA9PiBwYWNrQ29tcG9uZW50cyhbVGV4ZWxDb21wb25lbnQuRGVwdGhdLCBjb21wb25lbnRzLCAz
MiwgJ2Zsb2F0JyksCisgICAgICBiaXRzVG9OdW1iZXI6IGNvbXBvbmVudHMgPT4gKHsKKyAgICAg
ICAgUjogZmxvYXRCaXRzVG9OdW1iZXIoY29tcG9uZW50cy5SLCBrRmxvYXQ5ZTVGb3JtYXQpLAor
ICAgICAgICBHOiBmbG9hdEJpdHNUb051bWJlcihjb21wb25lbnRzLkcsIGtGbG9hdDllNUZvcm1h
dCksCisgICAgICAgIEI6IGZsb2F0Qml0c1RvTnVtYmVyKGNvbXBvbmVudHMuQiwga0Zsb2F0OWU1
Rm9ybWF0KSwKKyAgICAgIH0pLAorCisgICAgICBiaXRzVG9VTFBGcm9tWmVybzogY29tcG9uZW50
cyA9PiAoeworICAgICAgICBSOiBmbG9hdEJpdHNUb05vcm1hbFVMUEZyb21aZXJvKGNvbXBvbmVu
dHMuUiwga0Zsb2F0OWU1Rm9ybWF0KSwKKyAgICAgICAgRzogZmxvYXRCaXRzVG9Ob3JtYWxVTFBG
cm9tWmVybyhjb21wb25lbnRzLkcsIGtGbG9hdDllNUZvcm1hdCksCisgICAgICAgIEI6IGZsb2F0
Qml0c1RvTm9ybWFsVUxQRnJvbVplcm8oY29tcG9uZW50cy5CLCBrRmxvYXQ5ZTVGb3JtYXQpLAor
ICAgICAgfSksCisKKyAgICAgIG51bWVyaWNSYW5nZTogeyBtaW46IDAsIG1heDogTnVtYmVyLlBP
U0lUSVZFX0lORklOSVRZIH0sCiAgICAgfSwKIAorICAgIGRlcHRoMzJmbG9hdDogbWFrZUZsb2F0
SW5mbyhbVGV4ZWxDb21wb25lbnQuRGVwdGhdLCAzMiwgeyByZXN0cmljdGVkRGVwdGg6IHRydWUg
fSksCiAgICAgZGVwdGgxNnVub3JtOiBtYWtlTm9ybWFsaXplZEluZm8oW1RleGVsQ29tcG9uZW50
LkRlcHRoXSwgMTYsIHsgc2lnbmVkOiBmYWxzZSwgc1JHQjogZmFsc2UgfSksCiAgICAgZGVwdGgy
NHBsdXM6IHsKICAgICAgIGNvbXBvbmVudE9yZGVyOiBbVGV4ZWxDb21wb25lbnQuRGVwdGhdLApA
QCAtNDY0LDI0ICs3MDYsMTQgQEAgZXhwb3J0IGNvbnN0IGtUZXhlbFJlcHJlc2VudGF0aW9uSW5m
byA9IHsKICAgICAgIGVuY29kZTogYXBwbHlFYWNoKCgpID0+IHVucmVhY2hhYmxlKCdkZXB0aDI0
cGx1cyBjYW5ub3QgYmUgZW5jb2RlZCcpLCBbVGV4ZWxDb21wb25lbnQuRGVwdGhdKSwKICAgICAg
IGRlY29kZTogYXBwbHlFYWNoKCgpID0+IHVucmVhY2hhYmxlKCdkZXB0aDI0cGx1cyBjYW5ub3Qg
YmUgZGVjb2RlZCcpLCBbVGV4ZWxDb21wb25lbnQuRGVwdGhdKSwKICAgICAgIHBhY2s6ICgpID0+
IHVucmVhY2hhYmxlKCdkZXB0aDI0cGx1cyBkYXRhIGNhbm5vdCBiZSBwYWNrZWQnKSwKKyAgICAg
IHVucGFja0JpdHM6ICgpID0+IHVucmVhY2hhYmxlKCdkZXB0aDI0cGx1cyBkYXRhIGNhbm5vdCBi
ZSB1bnBhY2tlZCcpLAorICAgICAgbnVtYmVyVG9CaXRzOiAoKSA9PiB1bnJlYWNoYWJsZSgnZGVw
dGgyNHBsdXMgaGFzIG5vIHJlcHJlc2VudGF0aW9uJyksCisgICAgICBiaXRzVG9OdW1iZXI6ICgp
ID0+IHVucmVhY2hhYmxlKCdkZXB0aDI0cGx1cyBoYXMgbm8gcmVwcmVzZW50YXRpb24nKSwKKyAg
ICAgIGJpdHNUb1VMUEZyb21aZXJvOiAoKSA9PiB1bnJlYWNoYWJsZSgnZGVwdGgyNHBsdXMgaGFz
IG5vIHJlcHJlc2VudGF0aW9uJyksCisgICAgICBudW1lcmljUmFuZ2U6IHsgbWluOiAwLCBtYXg6
IDEgfSwKICAgICB9LAogCi0gICAgc3RlbmNpbDg6IHsKLSAgICAgIGNvbXBvbmVudE9yZGVyOiBb
VGV4ZWxDb21wb25lbnQuU3RlbmNpbF0sCi0gICAgICBjb21wb25lbnRJbmZvOiB7IFN0ZW5jaWw6
IHsgZGF0YVR5cGU6ICd1aW50JywgYml0TGVuZ3RoOiA4IH0gfSwKLSAgICAgIGVuY29kZTogY29t
cG9uZW50cyA9PiB7Ci0gICAgICAgIGFzc2VydChjb21wb25lbnRzLlN0ZW5jaWwgIT09IHVuZGVm
aW5lZCk7Ci0gICAgICAgIGFzc2VydEluSW50ZWdlclJhbmdlKGNvbXBvbmVudHMuU3RlbmNpbCwg
OCwgZmFsc2UpOwotICAgICAgICByZXR1cm4gY29tcG9uZW50czsKLSAgICAgIH0sCi0gICAgICBk
ZWNvZGU6IGNvbXBvbmVudHMgPT4gewotICAgICAgICBhc3NlcnQoY29tcG9uZW50cy5TdGVuY2ls
ICE9PSB1bmRlZmluZWQpOwotICAgICAgICBhc3NlcnRJbkludGVnZXJSYW5nZShjb21wb25lbnRz
LlN0ZW5jaWwsIDgsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7Ci0gICAgICB9
LAotICAgICAgcGFjazogY29tcG9uZW50cyA9PiBwYWNrQ29tcG9uZW50cyhbVGV4ZWxDb21wb25l
bnQuU3RlbmNpbF0sIGNvbXBvbmVudHMsIDgsICd1aW50JyksCi0gICAgfSwKLQorICAgIHN0ZW5j
aWw4OiBtYWtlSW50ZWdlckluZm8oW1RleGVsQ29tcG9uZW50LlN0ZW5jaWxdLCA4LCB7IHNpZ25l
ZDogZmFsc2UgfSksCiAgICAgJ2RlcHRoMjR1bm9ybS1zdGVuY2lsOCc6IHsKICAgICAgIGNvbXBv
bmVudE9yZGVyOiBbVGV4ZWxDb21wb25lbnQuRGVwdGgsIFRleGVsQ29tcG9uZW50LlN0ZW5jaWxd
LAogICAgICAgY29tcG9uZW50SW5mbzogewpAQCAtNTEzLDYgKzc0NSwxMSBAQCBleHBvcnQgY29u
c3Qga1RleGVsUmVwcmVzZW50YXRpb25JbmZvID0gewogICAgICAgICB9OwogICAgICAgfSwKICAg
ICAgIHBhY2s6ICgpID0+IHVucmVhY2hhYmxlKCdkZXB0aDI0dW5vcm0tc3RlbmNpbDggZGF0YSBj
YW5ub3QgYmUgcGFja2VkJyksCisgICAgICB1bnBhY2tCaXRzOiAoKSA9PiB1bnJlYWNoYWJsZSgn
ZGVwdGgyNHVub3JtLXN0ZW5jaWw4IGRhdGEgY2Fubm90IGJlIHVucGFja2VkJyksCisgICAgICBu
dW1iZXJUb0JpdHM6ICgpID0+IHVucmVhY2hhYmxlKCdub3QgaW1wbGVtZW50ZWQnKSwKKyAgICAg
IGJpdHNUb051bWJlcjogKCkgPT4gdW5yZWFjaGFibGUoJ25vdCBpbXBsZW1lbnRlZCcpLAorICAg
ICAgYml0c1RvVUxQRnJvbVplcm86ICgpID0+IHVucmVhY2hhYmxlKCdub3QgaW1wbGVtZW50ZWQn
KSwKKyAgICAgIG51bWVyaWNSYW5nZTogbnVsbCwKICAgICB9LAogCiAgICAgJ2RlcHRoMzJmbG9h
dC1zdGVuY2lsOCc6IHsKQEAgLTU0MCw2ICs3NzcsMTEgQEAgZXhwb3J0IGNvbnN0IGtUZXhlbFJl
cHJlc2VudGF0aW9uSW5mbyA9IHsKICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHM7CiAgICAgICB9
LAogICAgICAgcGFjazogKCkgPT4gdW5yZWFjaGFibGUoJ2RlcHRoMzJmbG9hdC1zdGVuY2lsOCBk
YXRhIGNhbm5vdCBiZSBwYWNrZWQnKSwKKyAgICAgIHVucGFja0JpdHM6ICgpID0+IHVucmVhY2hh
YmxlKCdkZXB0aDMyZmxvYXQtc3RlbmNpbDggZGF0YSBjYW5ub3QgYmUgdW5wYWNrZWQnKSwKKyAg
ICAgIG51bWJlclRvQml0czogKCkgPT4gdW5yZWFjaGFibGUoJ25vdCBpbXBsZW1lbnRlZCcpLAor
ICAgICAgYml0c1RvTnVtYmVyOiAoKSA9PiB1bnJlYWNoYWJsZSgnbm90IGltcGxlbWVudGVkJyks
CisgICAgICBiaXRzVG9VTFBGcm9tWmVybzogKCkgPT4gdW5yZWFjaGFibGUoJ25vdCBpbXBsZW1l
bnRlZCcpLAorICAgICAgbnVtZXJpY1JhbmdlOiBudWxsLAogICAgIH0sCiAKICAgICAnZGVwdGgy
NHBsdXMtc3RlbmNpbDgnOiB7CkBAIC01NjksNiArODExLDExIEBAIGV4cG9ydCBjb25zdCBrVGV4
ZWxSZXByZXNlbnRhdGlvbkluZm8gPSB7CiAgICAgICAgIHJldHVybiBjb21wb25lbnRzOwogICAg
ICAgfSwKICAgICAgIHBhY2s6ICgpID0+IHVucmVhY2hhYmxlKCdkZXB0aDI0cGx1cy1zdGVuY2ls
OCBkYXRhIGNhbm5vdCBiZSBwYWNrZWQnKSwKKyAgICAgIHVucGFja0JpdHM6ICgpID0+IHVucmVh
Y2hhYmxlKCdkZXB0aDI0cGx1cy1zdGVuY2lsOCBkYXRhIGNhbm5vdCBiZSB1bnBhY2tlZCcpLAor
ICAgICAgbnVtYmVyVG9CaXRzOiAoKSA9PiB1bnJlYWNoYWJsZSgnZGVwdGgyNHBsdXMtc3RlbmNp
bDggaGFzIG5vIHJlcHJlc2VudGF0aW9uJyksCisgICAgICBiaXRzVG9OdW1iZXI6ICgpID0+IHVu
cmVhY2hhYmxlKCdkZXB0aDI0cGx1cy1zdGVuY2lsOCBoYXMgbm8gcmVwcmVzZW50YXRpb24nKSwK
KyAgICAgIGJpdHNUb1VMUEZyb21aZXJvOiAoKSA9PiB1bnJlYWNoYWJsZSgnZGVwdGgyNHBsdXMt
c3RlbmNpbDggaGFzIG5vIHJlcHJlc2VudGF0aW9uJyksCisgICAgICBudW1lcmljUmFuZ2U6IG51
bGwsCiAgICAgfSwKICAgfSwKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvdXRpbC90ZXh0dXJlL3RleGVsX3ZpZXcuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC90ZXh0dXJlL3RleGVsX3ZpZXcuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NWMyY2ZiZjhiZjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC90ZXh0
dXJlL3RleGVsX3ZpZXcuanMKQEAgLTAsMCArMSwxMjIgQEAKKy8qKgorICogQVVUTy1HRU5FUkFU
RUQgLSBETyBOT1QgRURJVC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3B1d2ViL2N0cwor
ICoqLyBpbXBvcnQgeyBhc3NlcnQsIG1lbWNweSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGls
L3V0aWwuanMnOworaW1wb3J0IHsga1RleHR1cmVGb3JtYXRJbmZvIH0gZnJvbSAnLi4vLi4vY2Fw
YWJpbGl0eV9pbmZvLmpzJzsKK2ltcG9ydCB7IHJlaWZ5RXh0ZW50M0QsIHJlaWZ5T3JpZ2luM0Qg
fSBmcm9tICcuLi91bmlvbnMuanMnOworCitpbXBvcnQgeyBrVGV4ZWxSZXByZXNlbnRhdGlvbklu
Zm8sIG1ha2VDbGFtcFRvUmFuZ2UgfSBmcm9tICcuL3RleGVsX2RhdGEuanMnOworCisvKiogRnVu
Y3Rpb24gdGFraW5nIHNvbWUgeCx5LHogY29vcmRpbmF0ZXMgYW5kIHJldHVybmluZyBgUmVhZG9u
bHk8VD5gLiAqLworCisvKioKKyAqIFdyYXBwZXIgdG8gdmlldyB2YXJpb3VzIHJlcHJlc2VudGF0
aW9ucyBvZiB0ZXh0dXJlIGRhdGEgaW4gb3RoZXIgd2F5cy4gRS5nLiwgY2FuOgorICogLSBQcm92
aWRlIGEgbWFwcGVkIGJ1ZmZlciwgY29udGFpbmluZyBjb3BpZWQgdGV4dHVyZSBkYXRhLCBhbmQg
cmVhZCBjb2xvciB2YWx1ZXMuCisgKiAtIFByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRl
cyBjb2xvciB2YWx1ZXMgYnkgY29vcmRpbmF0ZSwgYW5kIGNvbnZlcnQgdG8gVUxQcy1mcm9tLXpl
cm8uCisgKgorICogTUFJTlRFTkFOQ0VfVE9ETzogV291bGQgbmVlZCBzb21lIHJlZmFjdG9yaW5n
IHRvIHN1cHBvcnQgYmxvY2sgZm9ybWF0cywgd2hpY2ggY291bGQgYmUgcGFydGlhbGx5CisgKiBz
dXBwb3J0ZWQgaWYgdXNlZnVsLgorICovCitleHBvcnQgY2xhc3MgVGV4ZWxWaWV3IHsKKyAgLyoq
IFRoZSBHUFVUZXh0dXJlRm9ybWF0IG9mIHRoZSBUZXhlbFZpZXcuICovCisKKyAgLyoqIEdlbmVy
YXRlcyB0aGUgYnl0ZXMgZm9yIHRoZSB0ZXhlbCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuICov
CisKKyAgLyoqIEdlbmVyYXRlcyB0aGUgVUxQcy1mcm9tLXplcm8gZm9yIHRoZSB0ZXhlbCBhdCB0
aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuICovCisKKyAgLyoqIEdlbmVyYXRlcyB0aGUgY29sb3IgZm9y
IHRoZSB0ZXhlbCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMuICovCisKKyAgY29uc3RydWN0b3Io
Zm9ybWF0LCB7IGJ5dGVzLCB1bHBGcm9tWmVybywgY29sb3IgfSkgeworICAgIHRoaXMuZm9ybWF0
ID0gZm9ybWF0OworICAgIHRoaXMuYnl0ZXMgPSBieXRlczsKKyAgICB0aGlzLnVscEZyb21aZXJv
ID0gdWxwRnJvbVplcm87CisgICAgdGhpcy5jb2xvciA9IGNvbG9yOworICB9CisKKyAgLyoqCisg
ICAqIFByb2R1Y2VzIGEgVGV4ZWxWaWV3IGZyb20gImxpbmVhciBpbWFnZSBkYXRhIiwgaS5lLiB0
aGUgYHdyaXRlVGV4dHVyZWAgZm9ybWF0LiBUYWtlcyBhCisgICAqIHJlZmVyZW5jZSB0byB0aGUg
aW5wdXQgYHN1YnJlY3REYXRhYCwgc28gYW55IGNoYW5nZXMgdG8gaXQgd2lsbCBiZSB2aXNpYmxl
IGluIHRoZSBUZXhlbFZpZXcuCisgICAqLworICBzdGF0aWMgZnJvbVRleHR1cmVEYXRhQnlSZWZl
cmVuY2UoCisgICAgZm9ybWF0LAorICAgIHN1YnJlY3REYXRhLAorICAgIHsgYnl0ZXNQZXJSb3cs
IHJvd3NQZXJJbWFnZSwgc3VicmVjdE9yaWdpbiwgc3VicmVjdFNpemUgfQorICApIHsKKyAgICBj
b25zdCBvcmlnaW4gPSByZWlmeU9yaWdpbjNEKHN1YnJlY3RPcmlnaW4pOworICAgIGNvbnN0IHNp
emUgPSByZWlmeUV4dGVudDNEKHN1YnJlY3RTaXplKTsKKworICAgIGNvbnN0IGluZm8gPSBrVGV4
dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKyAgICBhc3NlcnQoaW5mby5ibG9ja1dpZHRoID09PSAx
ICYmIGluZm8uYmxvY2tIZWlnaHQgPT09IDEsICd1bmltcGxlbWVudGVkIGZvciBibG9jayBmb3Jt
YXRzJyk7CisKKyAgICByZXR1cm4gVGV4ZWxWaWV3LmZyb21UZXhlbHNBc0J5dGVzKGZvcm1hdCwg
Y29vcmRzID0+IHsKKyAgICAgIGFzc2VydCgKKyAgICAgICAgY29vcmRzLnggPj0gb3JpZ2luLngg
JiYKKyAgICAgICAgICBjb29yZHMueSA+PSBvcmlnaW4ueSAmJgorICAgICAgICAgIGNvb3Jkcy56
ID49IG9yaWdpbi56ICYmCisgICAgICAgICAgY29vcmRzLnggPCBzaXplLndpZHRoICYmCisgICAg
ICAgICAgY29vcmRzLnkgPCBzaXplLmhlaWdodCAmJgorICAgICAgICAgIGNvb3Jkcy56IDwgc2l6
ZS5kZXB0aE9yQXJyYXlMYXllcnMsCisgICAgICAgICdjb29yZGluYXRlIG91dCBvZiBib3VuZHMn
CisgICAgICApOworCisgICAgICBjb25zdCBpbWFnZU9mZnNldEluUm93cyA9IChjb29yZHMueiAt
IG9yaWdpbi56KSAqIHJvd3NQZXJJbWFnZTsKKyAgICAgIGNvbnN0IHJvd09mZnNldCA9IChpbWFn
ZU9mZnNldEluUm93cyArIChjb29yZHMueSAtIG9yaWdpbi55KSkgKiBieXRlc1BlclJvdzsKKyAg
ICAgIGNvbnN0IG9mZnNldCA9IHJvd09mZnNldCArIChjb29yZHMueCAtIG9yaWdpbi54KSAqIGlu
Zm8uYnl0ZXNQZXJCbG9jazsKKworICAgICAgLy8gTUFJTlRFTkFOQ0VfVE9ETzogVG8gc3VwcG9y
dCBibG9jayBmb3JtYXRzLCBkZWNvZGUgdGhlIGJsb2NrIGFuZCB0aGVuIGluZGV4IGludG8gdGhl
IHJlc3VsdC4KKyAgICAgIHJldHVybiBzdWJyZWN0RGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNl
dCArIGluZm8uYnl0ZXNQZXJCbG9jayk7CisgICAgfSk7CisgIH0KKworICAvKiogUHJvZHVjZXMg
YSBUZXhlbFZpZXcgZnJvbSBhIGdlbmVyYXRvciBvZiBieXRlcyBmb3IgaW5kaXZpZHVhbCB0ZXhl
bCBibG9ja3MuICovCisgIHN0YXRpYyBmcm9tVGV4ZWxzQXNCeXRlcyhmb3JtYXQsIGdlbmVyYXRv
cikgeworICAgIGNvbnN0IGluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKyAgICBh
c3NlcnQoaW5mby5ibG9ja1dpZHRoID09PSAxICYmIGluZm8uYmxvY2tIZWlnaHQgPT09IDEsICd1
bmltcGxlbWVudGVkIGZvciBibG9jayBmb3JtYXRzJyk7CisKKyAgICBjb25zdCByZXByID0ga1Rl
eGVsUmVwcmVzZW50YXRpb25JbmZvW2Zvcm1hdF07CisgICAgcmV0dXJuIG5ldyBUZXhlbFZpZXco
Zm9ybWF0LCB7CisgICAgICBieXRlczogZ2VuZXJhdG9yLAorICAgICAgdWxwRnJvbVplcm86IGNv
b3JkcyA9PiByZXByLmJpdHNUb1VMUEZyb21aZXJvKHJlcHIudW5wYWNrQml0cyhnZW5lcmF0b3Io
Y29vcmRzKSkpLAorICAgICAgY29sb3I6IGNvb3JkcyA9PiByZXByLmJpdHNUb051bWJlcihyZXBy
LnVucGFja0JpdHMoZ2VuZXJhdG9yKGNvb3JkcykpKSwKKyAgICB9KTsKKyAgfQorCisgIC8qKiBQ
cm9kdWNlcyBhIFRleGVsVmlldyBmcm9tIGEgZ2VuZXJhdG9yIG9mIG51bWVyaWMgImNvbG9yIiB2
YWx1ZXMgZm9yIGVhY2ggdGV4ZWwuICovCisgIHN0YXRpYyBmcm9tVGV4ZWxzQXNDb2xvcnMoZm9y
bWF0LCBnZW5lcmF0b3IsIHsgY2xhbXBUb0Zvcm1hdFJhbmdlID0gZmFsc2UgfSA9IHt9KSB7Cisg
ICAgY29uc3QgaW5mbyA9IGtUZXh0dXJlRm9ybWF0SW5mb1tmb3JtYXRdOworICAgIGFzc2VydChp
bmZvLmJsb2NrV2lkdGggPT09IDEgJiYgaW5mby5ibG9ja0hlaWdodCA9PT0gMSwgJ3VuaW1wbGVt
ZW50ZWQgZm9yIGJsb2NrIGZvcm1hdHMnKTsKKworICAgIGlmIChjbGFtcFRvRm9ybWF0UmFuZ2Up
IHsKKyAgICAgIGNvbnN0IGFwcGx5Q2xhbXAgPSBtYWtlQ2xhbXBUb1JhbmdlKGZvcm1hdCk7Cisg
ICAgICBjb25zdCBvbGRHZW5lcmF0b3IgPSBnZW5lcmF0b3I7CisgICAgICBnZW5lcmF0b3IgPSBj
b29yZHMgPT4gYXBwbHlDbGFtcChvbGRHZW5lcmF0b3IoY29vcmRzKSk7CisgICAgfQorCisgICAg
Y29uc3QgcmVwciA9IGtUZXhlbFJlcHJlc2VudGF0aW9uSW5mb1tmb3JtYXRdOworICAgIHJldHVy
biBuZXcgVGV4ZWxWaWV3KGZvcm1hdCwgeworICAgICAgYnl0ZXM6IGNvb3JkcyA9PiBuZXcgVWlu
dDhBcnJheShyZXByLnBhY2socmVwci5lbmNvZGUoZ2VuZXJhdG9yKGNvb3JkcykpKSksCisgICAg
ICB1bHBGcm9tWmVybzogY29vcmRzID0+IHJlcHIuYml0c1RvVUxQRnJvbVplcm8ocmVwci5udW1i
ZXJUb0JpdHMoZ2VuZXJhdG9yKGNvb3JkcykpKSwKKyAgICAgIGNvbG9yOiBnZW5lcmF0b3IsCisg
ICAgfSk7CisgIH0KKworICAvKiogV3JpdGVzIHRoZSBjb250ZW50cyBvZiBhIFRleGVsVmlldyBh
cyAibGluZWFyIGltYWdlIGRhdGEiLCBpLmUuIHRoZSBgd3JpdGVUZXh0dXJlYCBmb3JtYXQuICov
CisgIHdyaXRlVGV4dHVyZURhdGEoCisgICAgc3VicmVjdERhdGEsCisgICAgeyBieXRlc1BlclJv
dywgcm93c1BlckltYWdlLCBzdWJyZWN0T3JpZ2luOiBzdWJyZWN0T3JpZ2luXywgc3VicmVjdFNp
emU6IHN1YnJlY3RTaXplXyB9CisgICkgeworICAgIGNvbnN0IHN1YnJlY3RPcmlnaW4gPSByZWlm
eU9yaWdpbjNEKHN1YnJlY3RPcmlnaW5fKTsKKyAgICBjb25zdCBzdWJyZWN0U2l6ZSA9IHJlaWZ5
RXh0ZW50M0Qoc3VicmVjdFNpemVfKTsKKworICAgIGNvbnN0IGluZm8gPSBrVGV4dHVyZUZvcm1h
dEluZm9bdGhpcy5mb3JtYXRdOworICAgIGFzc2VydChpbmZvLmJsb2NrV2lkdGggPT09IDEgJiYg
aW5mby5ibG9ja0hlaWdodCA9PT0gMSwgJ3VuaW1wbGVtZW50ZWQgZm9yIGJsb2NrIGZvcm1hdHMn
KTsKKworICAgIGZvciAobGV0IHogPSBzdWJyZWN0T3JpZ2luLno7IHogPCBzdWJyZWN0T3JpZ2lu
LnogKyBzdWJyZWN0U2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7ICsreikgeworICAgICAgZm9yIChs
ZXQgeSA9IHN1YnJlY3RPcmlnaW4ueTsgeSA8IHN1YnJlY3RPcmlnaW4ueSArIHN1YnJlY3RTaXpl
LmhlaWdodDsgKyt5KSB7CisgICAgICAgIGZvciAobGV0IHggPSBzdWJyZWN0T3JpZ2luLng7IHgg
PCBzdWJyZWN0T3JpZ2luLnggKyBzdWJyZWN0U2l6ZS53aWR0aDsgKyt4KSB7CisgICAgICAgICAg
Y29uc3Qgc3RhcnQgPSAoeiAqIHJvd3NQZXJJbWFnZSArIHkpICogYnl0ZXNQZXJSb3cgKyB4ICog
aW5mby5ieXRlc1BlckJsb2NrOworICAgICAgICAgIG1lbWNweSh7IHNyYzogdGhpcy5ieXRlcyh7
IHgsIHksIHogfSkgfSwgeyBkc3Q6IHN1YnJlY3REYXRhLCBzdGFydCB9KTsKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS90ZXh0dXJlX29rLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL3RleHR1cmUvdGV4dHVyZV9v
ay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43
ZWYyMmU5YTQzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvdXRpbC90ZXh0dXJlL3RleHR1cmVfb2stZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS91dGlsL3RleHR1cmUvdGV4dHVyZV9vay5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS90ZXh0dXJlX29rLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lMmQ5NjRjMTZiYjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC90ZXh0dXJlL3Rl
eHR1cmVfb2suaHRtbApAQCAtMCwwICsxLDcgQEAKKworICAgICAgICAgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgICAg
ICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICIvd2ViZ3B1L2N0cy5odHRwcy5odG1sP3E9d2Vi
Z3B1OnV0aWwsdGV4dHVyZSx0ZXh0dXJlX29rOioiOworICAgICAgICAgICAgICAgIDwvc2NyaXB0
PgorICAgICAgICAgICAgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS90ZXh0dXJl
X29rLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVy
ZS90ZXh0dXJlX29rLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NDMwZDQzM2JmMjc3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS90ZXh0dXJlX29rLmpzCkBAIC0wLDAgKzEsMzA1IEBA
CisvKioKKyAqIEFVVE8tR0VORVJBVEVEIC0gRE8gTk9UIEVESVQuIFNvdXJjZTogaHR0cHM6Ly9n
aXRodWIuY29tL2dwdXdlYi9jdHMKKyAqKi8gaW1wb3J0IHsgYXNzZXJ0LCBFcnJvcldpdGhFeHRy
YSwgdW5yZWFjaGFibGUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdXRpbC91dGlsLmpzJzsKK2lt
cG9ydCB7IGtUZXh0dXJlRm9ybWF0SW5mbyB9IGZyb20gJy4uLy4uL2NhcGFiaWxpdHlfaW5mby5q
cyc7CitpbXBvcnQgeyBnZW5lcmF0ZVByZXR0eVRhYmxlIH0gZnJvbSAnLi4vcHJldHR5X2RpZmZf
dGFibGVzLmpzJzsKK2ltcG9ydCB7IHJlaWZ5RXh0ZW50M0QsIHJlaWZ5T3JpZ2luM0QgfSBmcm9t
ICcuLi91bmlvbnMuanMnOworCitpbXBvcnQgeyBnZXRUZXh0dXJlU3ViQ29weUxheW91dCB9IGZy
b20gJy4vbGF5b3V0LmpzJzsKK2ltcG9ydCB7IGtUZXhlbFJlcHJlc2VudGF0aW9uSW5mbyB9IGZy
b20gJy4vdGV4ZWxfZGF0YS5qcyc7CitpbXBvcnQgeyBUZXhlbFZpZXcgfSBmcm9tICcuL3RleGVs
X3ZpZXcuanMnOworCitmdW5jdGlvbiBtYWtlVGV4ZWxWaWV3Q29tcGFyZXIoZm9ybWF0LCB7IGFj
dFRleGVsVmlldywgZXhwVGV4ZWxWaWV3IH0sIG9wdHMpIHsKKyAgY29uc3QgeworICAgIG1heElu
dERpZmYgPSAwLAorICAgIG1heEZyYWN0aW9uYWxEaWZmLAorICAgIG1heERpZmZVTFBzRm9yTm9y
bUZvcm1hdCwKKyAgICBtYXhEaWZmVUxQc0ZvckZsb2F0Rm9ybWF0LAorICB9ID0gb3B0czsKKwor
ICBhc3NlcnQobWF4SW50RGlmZiA+PSAwLCAndGhyZXNob2xkIG11c3QgYmUgbm9uLW5lZ2F0aXZl
Jyk7CisgIGlmIChtYXhGcmFjdGlvbmFsRGlmZiAhPT0gdW5kZWZpbmVkKSB7CisgICAgYXNzZXJ0
KG1heEZyYWN0aW9uYWxEaWZmID49IDAsICd0aHJlc2hvbGQgbXVzdCBiZSBub24tbmVnYXRpdmUn
KTsKKyAgfQorICBpZiAobWF4RGlmZlVMUHNGb3JGbG9hdEZvcm1hdCAhPT0gdW5kZWZpbmVkKSB7
CisgICAgYXNzZXJ0KG1heERpZmZVTFBzRm9yRmxvYXRGb3JtYXQgPj0gMCwgJ3RocmVzaG9sZCBt
dXN0IGJlIG5vbi1uZWdhdGl2ZScpOworICB9CisgIGlmIChtYXhEaWZmVUxQc0Zvck5vcm1Gb3Jt
YXQgIT09IHVuZGVmaW5lZCkgeworICAgIGFzc2VydChtYXhEaWZmVUxQc0Zvck5vcm1Gb3JtYXQg
Pj0gMCwgJ3RocmVzaG9sZCBtdXN0IGJlIG5vbi1uZWdhdGl2ZScpOworICB9CisKKyAgY29uc3Qg
Zm10SXNJbnQgPSBmb3JtYXQuaW5jbHVkZXMoJ2ludCcpOworICBjb25zdCBmbXRJc05vcm0gPSBm
b3JtYXQuaW5jbHVkZXMoJ25vcm0nKTsKKyAgY29uc3QgZm10SXNGbG9hdCA9IGZvcm1hdC5pbmNs
dWRlcygnZmxvYXQnKTsKKworICBjb25zdCB0dmMgPSB7fTsKKyAgaWYgKGZtdElzSW50KSB7Cisg
ICAgdHZjLnByZWRpY2F0ZSA9IGNvb3JkcyA9PgorICAgICAgY29tcGFyZVBlckNvbXBvbmVudChh
Y3RUZXhlbFZpZXcuY29sb3IoY29vcmRzKSwgZXhwVGV4ZWxWaWV3LmNvbG9yKGNvb3JkcyksIG1h
eEludERpZmYpOworICB9IGVsc2UgaWYgKGZtdElzTm9ybSAmJiBtYXhEaWZmVUxQc0Zvck5vcm1G
b3JtYXQgIT09IHVuZGVmaW5lZCkgeworICAgIHR2Yy5wcmVkaWNhdGUgPSBjb29yZHMgPT4KKyAg
ICAgIGNvbXBhcmVQZXJDb21wb25lbnQoCisgICAgICAgIGFjdFRleGVsVmlldy51bHBGcm9tWmVy
byhjb29yZHMpLAorICAgICAgICBleHBUZXhlbFZpZXcudWxwRnJvbVplcm8oY29vcmRzKSwKKyAg
ICAgICAgbWF4RGlmZlVMUHNGb3JOb3JtRm9ybWF0CisgICAgICApOworICB9IGVsc2UgaWYgKGZt
dElzRmxvYXQgJiYgbWF4RGlmZlVMUHNGb3JGbG9hdEZvcm1hdCAhPT0gdW5kZWZpbmVkKSB7Cisg
ICAgdHZjLnByZWRpY2F0ZSA9IGNvb3JkcyA9PgorICAgICAgY29tcGFyZVBlckNvbXBvbmVudCgK
KyAgICAgICAgYWN0VGV4ZWxWaWV3LnVscEZyb21aZXJvKGNvb3JkcyksCisgICAgICAgIGV4cFRl
eGVsVmlldy51bHBGcm9tWmVybyhjb29yZHMpLAorICAgICAgICBtYXhEaWZmVUxQc0ZvckZsb2F0
Rm9ybWF0CisgICAgICApOworICB9IGVsc2UgaWYgKG1heEZyYWN0aW9uYWxEaWZmICE9PSB1bmRl
ZmluZWQpIHsKKyAgICB0dmMucHJlZGljYXRlID0gY29vcmRzID0+CisgICAgICBjb21wYXJlUGVy
Q29tcG9uZW50KAorICAgICAgICBhY3RUZXhlbFZpZXcuY29sb3IoY29vcmRzKSwKKyAgICAgICAg
ZXhwVGV4ZWxWaWV3LmNvbG9yKGNvb3JkcyksCisgICAgICAgIG1heEZyYWN0aW9uYWxEaWZmCisg
ICAgICApOworICB9IGVsc2UgeworICAgIGlmIChmbXRJc05vcm0pIHsKKyAgICAgIHVucmVhY2hh
YmxlKCduZWVkIG1heEZyYWN0aW9uYWxEaWZmIG9yIG1heERpZmZVTFBzRm9yTm9ybUZvcm1hdCB0
byBjb21wYXJlIG5vcm0gdGV4dHVyZXMnKTsKKyAgICB9IGVsc2UgaWYgKGZtdElzRmxvYXQpIHsK
KyAgICAgIHVucmVhY2hhYmxlKCduZWVkIG1heEZyYWN0aW9uYWxEaWZmIG9yIG1heERpZmZVTFBz
Rm9yRmxvYXRGb3JtYXQgdG8gY29tcGFyZSBmbG9hdCB0ZXh0dXJlcycpOworICAgIH0gZWxzZSB7
CisgICAgICB1bnJlYWNoYWJsZSgpOworICAgIH0KKyAgfQorCisgIGNvbnN0IHJlcHIgPSBrVGV4
ZWxSZXByZXNlbnRhdGlvbkluZm9bZm9ybWF0XTsKKyAgaWYgKGZtdElzSW50KSB7CisgICAgdHZj
LnRhYmxlUm93cyA9IGZhaWxlZENvb3JkcyA9PiBbCisgICAgICBbYHRvbGVyYW5jZSDCsSAke21h
eEludERpZmZ9YF0sCisgICAgICAoZnVuY3Rpb24qICgpIHsKKyAgICAgICAgeWllbGQqIFtgIGRp
ZmYgKGFjdCAtIGV4cClgLCAnPT0nLCAnJ107CisgICAgICAgIGZvciAoY29uc3QgY29vcmRzIG9m
IGZhaWxlZENvb3JkcykgeworICAgICAgICAgIGNvbnN0IGFjdCA9IGFjdFRleGVsVmlldy5jb2xv
cihjb29yZHMpOworICAgICAgICAgIGNvbnN0IGV4cCA9IGV4cFRleGVsVmlldy5jb2xvcihjb29y
ZHMpOworICAgICAgICAgIHlpZWxkIHJlcHIuY29tcG9uZW50T3JkZXIubWFwKGNoID0+IGFjdFtj
aF0gLSBleHBbY2hdKS5qb2luKCcsJyk7CisgICAgICAgIH0KKyAgICAgIH0pKCksCisgICAgXTsK
KyAgfSBlbHNlIGlmICgKKyAgICAoZm10SXNOb3JtICYmIG1heERpZmZVTFBzRm9yTm9ybUZvcm1h
dCAhPT0gdW5kZWZpbmVkKSB8fAorICAgIChmbXRJc0Zsb2F0ICYmIG1heERpZmZVTFBzRm9yRmxv
YXRGb3JtYXQgIT09IHVuZGVmaW5lZCkKKyAgKSB7CisgICAgY29uc3QgdG9sZXJhbmNlVUxQcyA9
IGZtdElzTm9ybSA/IG1heERpZmZVTFBzRm9yTm9ybUZvcm1hdCA6IG1heERpZmZVTFBzRm9yRmxv
YXRGb3JtYXQ7CisgICAgdHZjLnRhYmxlUm93cyA9IGZhaWxlZENvb3JkcyA9PiBbCisgICAgICBb
YHRvbGVyYW5jZSDCsSAke3RvbGVyYW5jZVVMUHN9IG5vcm1hbC1VTFBzYF0sCisgICAgICAoZnVu
Y3Rpb24qICgpIHsKKyAgICAgICAgeWllbGQqIFtgIGRpZmYgKGFjdCAtIGV4cCkgaW4gbm9ybWFs
LVVMUHNgLCAnPT0nLCAnJ107CisgICAgICAgIGZvciAoY29uc3QgY29vcmRzIG9mIGZhaWxlZENv
b3JkcykgeworICAgICAgICAgIGNvbnN0IGFjdCA9IGFjdFRleGVsVmlldy51bHBGcm9tWmVybyhj
b29yZHMpOworICAgICAgICAgIGNvbnN0IGV4cCA9IGV4cFRleGVsVmlldy51bHBGcm9tWmVybyhj
b29yZHMpOworICAgICAgICAgIHlpZWxkIHJlcHIuY29tcG9uZW50T3JkZXIubWFwKGNoID0+IGFj
dFtjaF0gLSBleHBbY2hdKS5qb2luKCcsJyk7CisgICAgICAgIH0KKyAgICAgIH0pKCksCisgICAg
XTsKKyAgfSBlbHNlIHsKKyAgICBhc3NlcnQobWF4RnJhY3Rpb25hbERpZmYgIT09IHVuZGVmaW5l
ZCk7CisgICAgdHZjLnRhYmxlUm93cyA9IGZhaWxlZENvb3JkcyA9PiBbCisgICAgICBbYHRvbGVy
YW5jZSDCsSAke21heEZyYWN0aW9uYWxEaWZmfWBdLAorICAgICAgKGZ1bmN0aW9uKiAoKSB7Cisg
ICAgICAgIHlpZWxkKiBbYCBkaWZmIChhY3QgLSBleHApYCwgJz09JywgJyddOworICAgICAgICBm
b3IgKGNvbnN0IGNvb3JkcyBvZiBmYWlsZWRDb29yZHMpIHsKKyAgICAgICAgICBjb25zdCBhY3Qg
PSBhY3RUZXhlbFZpZXcuY29sb3IoY29vcmRzKTsKKyAgICAgICAgICBjb25zdCBleHAgPSBleHBU
ZXhlbFZpZXcuY29sb3IoY29vcmRzKTsKKyAgICAgICAgICB5aWVsZCByZXByLmNvbXBvbmVudE9y
ZGVyLm1hcChjaCA9PiAoYWN0W2NoXSAtIGV4cFtjaF0pLnRvUHJlY2lzaW9uKDQpKS5qb2luKCcs
Jyk7CisgICAgICAgIH0KKyAgICAgIH0pKCksCisgICAgXTsKKyAgfQorCisgIHJldHVybiB0dmM7
Cit9CisKK2Z1bmN0aW9uIGNvbXBhcmVQZXJDb21wb25lbnQoYWN0dWFsLCBleHBlY3RlZCwgbWF4
RGlmZikgeworICByZXR1cm4gT2JqZWN0LmtleXMoYWN0dWFsKS5ldmVyeShrZXkgPT4geworICAg
IGNvbnN0IGsgPSBrZXk7CisgICAgY29uc3QgYWN0ID0gYWN0dWFsW2tdOworICAgIGNvbnN0IGV4
cCA9IGV4cGVjdGVkW2tdOworICAgIGlmIChleHAgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBNYXRoLmFicyhhY3QgLSBleHApIDw9IG1heERpZmY7CisgIH0pOworfQor
CisvKiogQ3JlYXRlIGEgbmV3IG1hcHBhYmxlIEdQVUJ1ZmZlciwgYW5kIGNvcHkgYSBzdWJyZWN0
YW5nbGUgb2YgR1BVVGV4dHVyZSBkYXRhIGludG8gaXQuICovCitmdW5jdGlvbiBjcmVhdGVUZXh0
dXJlQ29weUZvck1hcFJlYWQodCwgc291cmNlLCBjb3B5U2l6ZSwgeyBmb3JtYXQgfSkgeworICBj
b25zdCB7IGJ5dGVMZW5ndGgsIGJ5dGVzUGVyUm93LCByb3dzUGVySW1hZ2UgfSA9IGdldFRleHR1
cmVTdWJDb3B5TGF5b3V0KGZvcm1hdCwgY29weVNpemUsIHsKKyAgICBhc3BlY3Q6IHNvdXJjZS5h
c3BlY3QsCisgIH0pOworCisgIGNvbnN0IGJ1ZmZlciA9IHQuZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7
CisgICAgdXNhZ2U6IEdQVUJ1ZmZlclVzYWdlLkNPUFlfRFNUIHwgR1BVQnVmZmVyVXNhZ2UuTUFQ
X1JFQUQsCisgICAgc2l6ZTogYnl0ZUxlbmd0aCwKKyAgfSk7CisKKyAgdC50cmFja0ZvckNsZWFu
dXAoYnVmZmVyKTsKKworICBjb25zdCBjbWQgPSB0LmRldmljZS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigpOworICBjbWQuY29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIHsgYnVmZmVyLCBieXRlc1Bl
clJvdywgcm93c1BlckltYWdlIH0sIGNvcHlTaXplKTsKKyAgdC5kZXZpY2UucXVldWUuc3VibWl0
KFtjbWQuZmluaXNoKCldKTsKKworICByZXR1cm4geyBidWZmZXIsIGJ5dGVzUGVyUm93LCByb3dz
UGVySW1hZ2UgfTsKK30KKworZnVuY3Rpb24gZmluZEZhaWxlZFBpeGVscygKKyAgZm9ybWF0LAor
ICBzdWJyZWN0T3JpZ2luLAorICBzdWJyZWN0U2l6ZSwKKyAgeyBhY3RUZXhlbFZpZXcsIGV4cFRl
eGVsVmlldyB9LAorICB0ZXhlbENvbXBhcmVPcHRpb25zCispIHsKKyAgY29uc3QgY29tcGFyZXIg
PSBtYWtlVGV4ZWxWaWV3Q29tcGFyZXIoCisgICAgZm9ybWF0LAorICAgIHsgYWN0VGV4ZWxWaWV3
LCBleHBUZXhlbFZpZXcgfSwKKyAgICB0ZXhlbENvbXBhcmVPcHRpb25zCisgICk7CisKKyAgY29u
c3QgbG93ZXJDb3JuZXIgPSBbc3VicmVjdFNpemUud2lkdGgsIHN1YnJlY3RTaXplLmhlaWdodCwg
c3VicmVjdFNpemUuZGVwdGhPckFycmF5TGF5ZXJzXTsKKyAgY29uc3QgdXBwZXJDb3JuZXIgPSBb
MCwgMCwgMF07CisgIGNvbnN0IGZhaWxlZFBpeGVscyA9IFtdOworICBmb3IgKGxldCB6ID0gc3Vi
cmVjdE9yaWdpbi56OyB6IDwgc3VicmVjdE9yaWdpbi56ICsgc3VicmVjdFNpemUuZGVwdGhPckFy
cmF5TGF5ZXJzOyArK3opIHsKKyAgICBmb3IgKGxldCB5ID0gc3VicmVjdE9yaWdpbi55OyB5IDwg
c3VicmVjdE9yaWdpbi55ICsgc3VicmVjdFNpemUuaGVpZ2h0OyArK3kpIHsKKyAgICAgIGZvciAo
bGV0IHggPSBzdWJyZWN0T3JpZ2luLng7IHggPCBzdWJyZWN0T3JpZ2luLnggKyBzdWJyZWN0U2l6
ZS53aWR0aDsgKyt4KSB7CisgICAgICAgIGNvbnN0IGNvb3JkcyA9IHsgeCwgeSwgeiB9OworCisg
ICAgICAgIGlmICghY29tcGFyZXIucHJlZGljYXRlKGNvb3JkcykpIHsKKyAgICAgICAgICBmYWls
ZWRQaXhlbHMucHVzaChjb29yZHMpOworICAgICAgICAgIGxvd2VyQ29ybmVyWzBdID0gTWF0aC5t
aW4obG93ZXJDb3JuZXJbMF0sIHgpOworICAgICAgICAgIGxvd2VyQ29ybmVyWzFdID0gTWF0aC5t
aW4obG93ZXJDb3JuZXJbMV0sIHkpOworICAgICAgICAgIGxvd2VyQ29ybmVyWzJdID0gTWF0aC5t
aW4obG93ZXJDb3JuZXJbMl0sIHopOworICAgICAgICAgIHVwcGVyQ29ybmVyWzBdID0gTWF0aC5t
YXgodXBwZXJDb3JuZXJbMF0sIHgpOworICAgICAgICAgIHVwcGVyQ29ybmVyWzFdID0gTWF0aC5t
YXgodXBwZXJDb3JuZXJbMV0sIHkpOworICAgICAgICAgIHVwcGVyQ29ybmVyWzJdID0gTWF0aC5t
YXgodXBwZXJDb3JuZXJbMl0sIHopOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cisg
IGlmIChmYWlsZWRQaXhlbHMubGVuZ3RoID09PSAwKSB7CisgICAgcmV0dXJuIHVuZGVmaW5lZDsK
KyAgfQorCisgIGNvbnN0IGluZm8gPSBrVGV4dHVyZUZvcm1hdEluZm9bZm9ybWF0XTsKKyAgY29u
c3QgcmVwciA9IGtUZXhlbFJlcHJlc2VudGF0aW9uSW5mb1tmb3JtYXRdOworCisgIGNvbnN0IGlu
dGVnZXJTYW1wbGVUeXBlID0gaW5mby5zYW1wbGVUeXBlID09PSAndWludCcgfHwgaW5mby5zYW1w
bGVUeXBlID09PSAnc2ludCc7CisgIGNvbnN0IG51bWJlclRvU3RyaW5nID0gaW50ZWdlclNhbXBs
ZVR5cGUgPyBuID0+IG4udG9GaXhlZCgpIDogbiA9PiBuLnRvUHJlY2lzaW9uKDYpOworCisgIGNv
bnN0IGNvbXBvbmVudE9yZGVyU3RyID0gcmVwci5jb21wb25lbnRPcmRlci5qb2luKCcsJykgKyAn
Oic7CisKKyAgY29uc3QgcHJpbnRDb29yZHMgPSAoZnVuY3Rpb24qICgpIHsKKyAgICB5aWVsZCog
WycgY29vcmRzJywgJz09JywgJ1gsWSxaOiddOworICAgIGZvciAoY29uc3QgY29vcmRzIG9mIGZh
aWxlZFBpeGVscykgeWllbGQgYCR7Y29vcmRzLnh9LCR7Y29vcmRzLnl9LCR7Y29vcmRzLnp9YDsK
KyAgfSkoKTsKKyAgY29uc3QgcHJpbnRBY3R1YWxCeXRlcyA9IChmdW5jdGlvbiogKCkgeworICAg
IHlpZWxkKiBbJyBhY3QuIHRleGVsIGJ5dGVzIChsaXR0bGUtZW5kaWFuKScsICc9PScsICcweDon
XTsKKyAgICBmb3IgKGNvbnN0IGNvb3JkcyBvZiBmYWlsZWRQaXhlbHMpIHsKKyAgICAgIHlpZWxk
IEFycmF5LmZyb20oYWN0VGV4ZWxWaWV3LmJ5dGVzKGNvb3JkcyksIGIgPT4gYi50b1N0cmluZygx
NikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignICcpOworICAgIH0KKyAgfSkoKTsKKyAgY29uc3Qg
cHJpbnRBY3R1YWxDb2xvcnMgPSAoZnVuY3Rpb24qICgpIHsKKyAgICB5aWVsZCogWycgYWN0LiBj
b2xvcnMnLCAnPT0nLCBjb21wb25lbnRPcmRlclN0cl07CisgICAgZm9yIChjb25zdCBjb29yZHMg
b2YgZmFpbGVkUGl4ZWxzKSB7CisgICAgICBjb25zdCBwaXhlbCA9IGFjdFRleGVsVmlldy5jb2xv
cihjb29yZHMpOworICAgICAgeWllbGQgYCR7cmVwci5jb21wb25lbnRPcmRlci5tYXAoY2ggPT4g
bnVtYmVyVG9TdHJpbmcocGl4ZWxbY2hdKSkuam9pbignLCcpfWA7CisgICAgfQorICB9KSgpOwor
ICBjb25zdCBwcmludEV4cGVjdGVkQ29sb3JzID0gKGZ1bmN0aW9uKiAoKSB7CisgICAgeWllbGQq
IFsnIGV4cC4gY29sb3JzJywgJz09JywgY29tcG9uZW50T3JkZXJTdHJdOworICAgIGZvciAoY29u
c3QgY29vcmRzIG9mIGZhaWxlZFBpeGVscykgeworICAgICAgY29uc3QgcGl4ZWwgPSBleHBUZXhl
bFZpZXcuY29sb3IoY29vcmRzKTsKKyAgICAgIHlpZWxkIGAke3JlcHIuY29tcG9uZW50T3JkZXIu
bWFwKGNoID0+IG51bWJlclRvU3RyaW5nKHBpeGVsW2NoXSkpLmpvaW4oJywnKX1gOworICAgIH0K
KyAgfSkoKTsKKyAgY29uc3QgcHJpbnRBY3R1YWxVTFBzID0gKGZ1bmN0aW9uKiAoKSB7CisgICAg
eWllbGQqIFsnIGFjdC4gbm9ybWFsLVVMUHMtZnJvbS16ZXJvJywgJz09JywgY29tcG9uZW50T3Jk
ZXJTdHJdOworICAgIGZvciAoY29uc3QgY29vcmRzIG9mIGZhaWxlZFBpeGVscykgeworICAgICAg
Y29uc3QgcGl4ZWwgPSBhY3RUZXhlbFZpZXcudWxwRnJvbVplcm8oY29vcmRzKTsKKyAgICAgIHlp
ZWxkIGAke3JlcHIuY29tcG9uZW50T3JkZXIubWFwKGNoID0+IHBpeGVsW2NoXSkuam9pbignLCcp
fWA7CisgICAgfQorICB9KSgpOworICBjb25zdCBwcmludEV4cGVjdGVkVUxQcyA9IChmdW5jdGlv
biogKCkgeworICAgIHlpZWxkKiBbYCBleHAuIG5vcm1hbC1VTFBzLWZyb20temVyb2AsICc9PScs
IGNvbXBvbmVudE9yZGVyU3RyXTsKKyAgICBmb3IgKGNvbnN0IGNvb3JkcyBvZiBmYWlsZWRQaXhl
bHMpIHsKKyAgICAgIGNvbnN0IHBpeGVsID0gZXhwVGV4ZWxWaWV3LnVscEZyb21aZXJvKGNvb3Jk
cyk7CisgICAgICB5aWVsZCBgJHtyZXByLmNvbXBvbmVudE9yZGVyLm1hcChjaCA9PiBwaXhlbFtj
aF0pLmpvaW4oJywnKX1gOworICAgIH0KKyAgfSkoKTsKKworICBjb25zdCBvcHRzID0geworICAg
IGZpbGxUb1dpZHRoOiAxMjAsCisgICAgbnVtYmVyVG9TdHJpbmcsCisgIH07CisKKyAgcmV0dXJu
IGBcCisgYmV0d2VlbiAke2xvd2VyQ29ybmVyfSBhbmQgJHt1cHBlckNvcm5lcn0gaW5jbHVzaXZl
OgorJHtnZW5lcmF0ZVByZXR0eVRhYmxlKG9wdHMsIFsKKyAgcHJpbnRDb29yZHMsCisgIHByaW50
QWN0dWFsQnl0ZXMsCisgIHByaW50QWN0dWFsQ29sb3JzLAorICBwcmludEV4cGVjdGVkQ29sb3Jz
LAorICBwcmludEFjdHVhbFVMUHMsCisgIHByaW50RXhwZWN0ZWRVTFBzLAorICAuLi5jb21wYXJl
ci50YWJsZVJvd3MoZmFpbGVkUGl4ZWxzKSwKK10pfWA7Cit9CisKKy8qKgorICogQ2hlY2sgdGhl
IGNvbnRlbnRzIG9mIGEgR1BVVGV4dHVyZSBieSByZWFkaW5nIGl0IGJhY2sgKHdpdGggY29weVRl
eHR1cmVUb0J1ZmZlcittYXBBc3luYyksIHRoZW4KKyAqIGNvbXBhcmluZyB0aGUgZGF0YSB3aXRo
IHRoZSBkYXRhIGluIGBleHBUZXhlbFZpZXdgLgorICoKKyAqIFRoZSBhY3R1YWwgYW5kIGV4cGVj
dGVkIHRleHR1cmUgZGF0YSBhcmUgYm90aCBjb252ZXJ0ZWQgdG8gdGhlICJOb3JtYWxVTFBGcm9t
WmVybyIgZm9ybWF0LAorICogd2hpY2ggaXMgYSBzaWduZWQgbnVtYmVyIHJlcHJlc2VudGluZyBo
b3cgZmFyIHRoZSBudW1iZXIgaXMgZnJvbSB6ZXJvLCBpbiBVTFBzLCBza2lwcGluZworICogc3Vi
bm9ybWFsIG51bWJlcnMgKHdoZXJlIFVMUCBpcyBkZWZpbmVkIGZvciBmbG9hdCwgbm9ybWFsaXpl
ZCwgYW5kIGludGVnZXIgZm9ybWF0cykuCisgKi8KK2V4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0
dXJlQ29udGVudElzT0tCeVQyQigKKyAgdCwKKyAgc291cmNlLAorICBjb3B5U2l6ZV8sCisgIHsg
ZXhwVGV4ZWxWaWV3IH0sCisgIHRleGVsQ29tcGFyZU9wdGlvbnMKKykgeworICBjb25zdCBzdWJy
ZWN0T3JpZ2luID0gcmVpZnlPcmlnaW4zRChzb3VyY2Uub3JpZ2luID8/IFswLCAwLCAwXSk7Cisg
IGNvbnN0IHN1YnJlY3RTaXplID0gcmVpZnlFeHRlbnQzRChjb3B5U2l6ZV8pOworICBjb25zdCBm
b3JtYXQgPSBleHBUZXhlbFZpZXcuZm9ybWF0OworCisgIGNvbnN0IHsgYnVmZmVyLCBieXRlc1Bl
clJvdywgcm93c1BlckltYWdlIH0gPSBjcmVhdGVUZXh0dXJlQ29weUZvck1hcFJlYWQoCisgICAg
dCwKKyAgICBzb3VyY2UsCisgICAgc3VicmVjdFNpemUsCisgICAgeyBmb3JtYXQgfQorICApOwor
CisgIGF3YWl0IGJ1ZmZlci5tYXBBc3luYyhHUFVNYXBNb2RlLlJFQUQpOworICBjb25zdCBkYXRh
ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLmdldE1hcHBlZFJhbmdlKCkpOworCisgIGNvbnN0IHRl
eGVsVmlld0NvbmZpZyA9IHsKKyAgICBieXRlc1BlclJvdywKKyAgICByb3dzUGVySW1hZ2UsCisg
ICAgc3VicmVjdE9yaWdpbiwKKyAgICBzdWJyZWN0U2l6ZSwKKyAgfTsKKworICBjb25zdCBhY3RU
ZXhlbFZpZXcgPSBUZXhlbFZpZXcuZnJvbVRleHR1cmVEYXRhQnlSZWZlcmVuY2UoZm9ybWF0LCBk
YXRhLCB0ZXhlbFZpZXdDb25maWcpOworCisgIGNvbnN0IGZhaWxlZFBpeGVsc01lc3NhZ2UgPSBm
aW5kRmFpbGVkUGl4ZWxzKAorICAgIGZvcm1hdCwKKyAgICBzdWJyZWN0T3JpZ2luLAorICAgIHN1
YnJlY3RTaXplLAorICAgIHsgYWN0VGV4ZWxWaWV3LCBleHBUZXhlbFZpZXcgfSwKKyAgICB0ZXhl
bENvbXBhcmVPcHRpb25zCisgICk7CisKKyAgaWYgKGZhaWxlZFBpeGVsc01lc3NhZ2UgPT09IHVu
ZGVmaW5lZCkgeworICAgIHJldHVybiB1bmRlZmluZWQ7CisgIH0KKworICBjb25zdCBtc2cgPSAn
VGV4dHVyZSBsZXZlbCBoYWQgdW5leHBlY3RlZCBjb250ZW50czpcbicgKyBmYWlsZWRQaXhlbHNN
ZXNzYWdlOworICByZXR1cm4gbmV3IEVycm9yV2l0aEV4dHJhKG1zZywgKCkgPT4gKHsKKyAgICBl
eHBUZXhlbFZpZXcsCisgICAgLy8gTWFrZSBhIG5ldyBUZXhlbFZpZXcgd2l0aCBhIGNvcHkgb2Yg
dGhlIGRhdGEgc28gd2UgY2FuIHVubWFwIHRoZSBidWZmZXIgKGRlYnVnIG1vZGUgb25seSkuCisg
ICAgYWN0VGV4ZWxWaWV3OiBUZXhlbFZpZXcuZnJvbVRleHR1cmVEYXRhQnlSZWZlcmVuY2UoZm9y
bWF0LCBkYXRhLnNsaWNlKCksIHRleGVsVmlld0NvbmZpZyksCisgIH0pKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91dGlsL3RleHR1cmUvdGV4
dHVyZV9vay5zcGVjLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0
aWwvdGV4dHVyZS90ZXh0dXJlX29rLnNwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5mNWQ3YTU4Y2RhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC90ZXh0dXJlL3RleHR1cmVfb2suc3BlYy5q
cwpAQCAtMCwwICsxLDE2NSBAQAorLyoqCisgKiBBVVRPLUdFTkVSQVRFRCAtIERPIE5PVCBFRElU
LiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9ncHV3ZWIvY3RzCisgKiovIGV4cG9ydCBjb25z
dCBkZXNjcmlwdGlvbiA9ICdjaGVja1BpeGVscyBoZWxwZXJzIGJlaGF2ZSBhcyBleHBlY3RlZCBh
Z2FpbnN0IHJlYWwgdGV4dHVyZXMnOworaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4u
Ly4uLy4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7CitpbXBvcnQgeyBHUFVUZXN0
IH0gZnJvbSAnLi4vLi4vZ3B1X3Rlc3QuanMnOworCitpbXBvcnQgeyBUZXhlbFZpZXcgfSBmcm9t
ICcuL3RleGVsX3ZpZXcuanMnOworaW1wb3J0IHsgdGV4dHVyZUNvbnRlbnRJc09LQnlUMkIgfSBm
cm9tICcuL3RleHR1cmVfb2suanMnOworCitleHBvcnQgY29uc3QgZyA9IG1ha2VUZXN0R3JvdXAo
R1BVVGVzdCk7CisKK2cudGVzdCgnZmxvYXQzMicpCisgIC5kZXNjKGBCYXNpYyB0ZXN0IHRoYXQg
YWN0dWFsL2V4cGVjdGVkIG11c3QgbWF0Y2gsIGZvciBmbG9hdDMyLmApCisgIC5wYXJhbXModSA9
PgorICAgIHUKKyAgICAgIC5jb21iaW5lV2l0aFBhcmFtcyhbCisgICAgICAgIHsgZm9ybWF0OiAn
cmdiYTMyZmxvYXQnIH0sIC8vCisgICAgICAgIHsgZm9ybWF0OiAncmczMmZsb2F0JyB9LAorICAg
ICAgXSkKKyAgICAgIC5iZWdpblN1YmNhc2VzKCkKKyAgICAgIC5jb21iaW5lV2l0aFBhcmFtcyhb
CisgICAgICAgIC8vIEV4cGVjdGVkIGRhdGEgaXMgMC42IGluIGFsbCBjaGFubmVscworICAgICAg
ICB7IGRhdGE6IDAuNiwgb3B0czogeyBtYXhGcmFjdGlvbmFsRGlmZjogMC4wMDAwMDAxIH0sIF9v
azogdHJ1ZSB9LAorICAgICAgICB7IGRhdGE6IDAuNiwgb3B0czogeyBtYXhEaWZmVUxQc0ZvckZs
b2F0Rm9ybWF0OiAxIH0sIF9vazogdHJ1ZSB9LAorCisgICAgICAgIHsgZGF0YTogMC41OTk5LCBv
cHRzOiB7IG1heEZyYWN0aW9uYWxEaWZmOiAwIH0sIF9vazogZmFsc2UgfSwKKyAgICAgICAgeyBk
YXRhOiAwLjU5OTksIG9wdHM6IHsgbWF4RnJhY3Rpb25hbERpZmY6IDAuMDAwMTAwMSB9LCBfb2s6
IHRydWUgfSwKKworICAgICAgICB7IGRhdGE6IDAuNjAwMSwgb3B0czogeyBtYXhGcmFjdGlvbmFs
RGlmZjogMCB9LCBfb2s6IGZhbHNlIH0sCisgICAgICAgIHsgZGF0YTogMC42MDAxLCBvcHRzOiB7
IG1heEZyYWN0aW9uYWxEaWZmOiAwLjAwMDEwMDEgfSwgX29rOiB0cnVlIH0sCisKKyAgICAgICAg
eyBkYXRhOiAwLjU5OTksIG9wdHM6IHsgbWF4RGlmZlVMUHNGb3JGbG9hdEZvcm1hdDogMTY3NyB9
LCBfb2s6IGZhbHNlIH0sCisgICAgICAgIHsgZGF0YTogMC41OTk5LCBvcHRzOiB7IG1heERpZmZV
TFBzRm9yRmxvYXRGb3JtYXQ6IDE2NzggfSwgX29rOiB0cnVlIH0sCisKKyAgICAgICAgeyBkYXRh
OiAwLjYwMDEsIG9wdHM6IHsgbWF4RGlmZlVMUHNGb3JGbG9hdEZvcm1hdDogMTY3NiB9LCBfb2s6
IGZhbHNlIH0sCisgICAgICAgIHsgZGF0YTogMC42MDAxLCBvcHRzOiB7IG1heERpZmZVTFBzRm9y
RmxvYXRGb3JtYXQ6IDE2NzcgfSwgX29rOiB0cnVlIH0sCisgICAgICBdKQorICApCisgIC5mbihh
c3luYyB0ID0+IHsKKyAgICBjb25zdCB7IGZvcm1hdCwgZGF0YSwgb3B0cywgX29rIH0gPSB0LnBh
cmFtczsKKworICAgIGNvbnN0IHNpemUgPSBbMSwgMV07CisgICAgY29uc3QgdGV4dHVyZSA9IHQu
ZGV2aWNlLmNyZWF0ZVRleHR1cmUoeworICAgICAgZm9ybWF0LAorICAgICAgc2l6ZSwKKyAgICAg
IHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9T
UkMsCisgICAgfSk7CisKKyAgICB0LnRyYWNrRm9yQ2xlYW51cCh0ZXh0dXJlKTsKKyAgICB0LmRl
dmljZS5xdWV1ZS53cml0ZVRleHR1cmUoeyB0ZXh0dXJlIH0sIG5ldyBGbG9hdDMyQXJyYXkoW2Rh
dGEsIGRhdGEsIGRhdGEsIGRhdGFdKSwge30sIHNpemUpOworCisgICAgY29uc3QgZXhwQ29sb3Ig
PSB7IFI6IDAuNiwgRzogMC42LCBCOiAwLjYsIEE6IDAuNiB9OworICAgIGNvbnN0IGV4cFRleGVs
VmlldyA9IFRleGVsVmlldy5mcm9tVGV4ZWxzQXNDb2xvcnMoZm9ybWF0LCBjb29yZHMgPT4gZXhw
Q29sb3IpOworCisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGV4dHVyZUNvbnRlbnRJc09LQnlU
MkIodCwgeyB0ZXh0dXJlIH0sIHNpemUsIHsgZXhwVGV4ZWxWaWV3IH0sIG9wdHMpOworICAgIHQu
ZXhwZWN0KChyZXN1bHQgPT09IHVuZGVmaW5lZCkgPT09IF9vaywgYGV4cGVjdGVkICR7X29rfSwg
Z290ICR7cmVzdWx0ID09PSB1bmRlZmluZWR9YCk7CisgIH0pOworCitnLnRlc3QoJ25vcm0nKQor
ICAuZGVzYyhgQmFzaWMgdGVzdCB0aGF0IGFjdHVhbC9leHBlY3RlZCBtdXN0IG1hdGNoLCBmb3Ig
dW5vcm0vc25vcm0uYCkKKyAgLnBhcmFtcyh1ID0+CisgICAgdQorICAgICAgLmNvbWJpbmUoJ21v
ZGUnLCBbJ2J5dGVzJywgJ2NvbG9ycyddKQorICAgICAgLmNvbWJpbmVXaXRoUGFyYW1zKFsKKyAg
ICAgICAgeyBmb3JtYXQ6ICdyOHVub3JtJywgX21heFZhbHVlOiAyNTUgfSwKKyAgICAgICAgeyBm
b3JtYXQ6ICdyOHNub3JtJywgX21heFZhbHVlOiAxMjcgfSwKKyAgICAgIF0pCisgICAgICAuYmVn
aW5TdWJjYXNlcygpCisgICAgICAuY29tYmluZVdpdGhQYXJhbXMoWworICAgICAgICAvLyBFeHBl
Y3RlZCBkYXRhIGlzIFsxMCwgMTBdCisgICAgICAgIHsgZGF0YTogWzEwLCAxMF0sIF9vazogdHJ1
ZSB9LAorICAgICAgICB7IGRhdGE6IFsxMCwgMTFdLCBfb2s6IGZhbHNlIH0sCisgICAgICAgIHsg
ZGF0YTogWzExLCAxMF0sIF9vazogZmFsc2UgfSwKKyAgICAgICAgeyBkYXRhOiBbMTEsIDExXSwg
X29rOiBmYWxzZSB9LAorICAgICAgXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAgY29u
c3QgeyBtb2RlLCBmb3JtYXQsIF9tYXhWYWx1ZSwgZGF0YSwgX29rIH0gPSB0LnBhcmFtczsKKwor
ICAgIGNvbnN0IHNpemUgPSBbMiwgMV07CisgICAgY29uc3QgdGV4dHVyZSA9IHQuZGV2aWNlLmNy
ZWF0ZVRleHR1cmUoeworICAgICAgZm9ybWF0LAorICAgICAgc2l6ZSwKKyAgICAgIHVzYWdlOiBH
UFVUZXh0dXJlVXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMsCisgICAg
fSk7CisKKyAgICB0LnRyYWNrRm9yQ2xlYW51cCh0ZXh0dXJlKTsKKyAgICB0LmRldmljZS5xdWV1
ZS53cml0ZVRleHR1cmUoeyB0ZXh0dXJlIH0sIG5ldyBJbnQ4QXJyYXkoZGF0YSksIHt9LCBzaXpl
KTsKKworICAgIGxldCBleHBUZXhlbFZpZXc7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICBj
YXNlICdieXRlcyc6CisgICAgICAgIGV4cFRleGVsVmlldyA9IFRleGVsVmlldy5mcm9tVGV4ZWxz
QXNCeXRlcyhmb3JtYXQsIGNvb3JkcyA9PiBuZXcgVWludDhBcnJheShbMTBdKSk7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSAnY29sb3JzJzoKKyAgICAgICAgZXhwVGV4ZWxWaWV3ID0gVGV4
ZWxWaWV3LmZyb21UZXhlbHNBc0NvbG9ycyhmb3JtYXQsIGNvb3JkcyA9PiAoeyBSOiAxMCAvIF9t
YXhWYWx1ZSB9KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNvbnN0IHJlc3VsdCA9
IGF3YWl0IHRleHR1cmVDb250ZW50SXNPS0J5VDJCKAorICAgICAgdCwKKyAgICAgIHsgdGV4dHVy
ZSB9LAorICAgICAgc2l6ZSwKKyAgICAgIHsgZXhwVGV4ZWxWaWV3IH0sCisgICAgICB7IG1heERp
ZmZVTFBzRm9yTm9ybUZvcm1hdDogMCB9CisgICAgKTsKKworICAgIHQuZXhwZWN0KChyZXN1bHQg
PT09IHVuZGVmaW5lZCkgPT09IF9vaywgcmVzdWx0Py5tZXNzYWdlKTsKKyAgfSk7CisKK2cudGVz
dCgnc25vcm1fbWluJykKKyAgLmRlc2MoCisgICAgYFRoZSBtaW5pbXVtIHNub3JtIHZhbHVlIGhh
cyB0d28gcG9zc2libGUgcmVwcmVzZW50YXRpb25zIChlLmcuIC0xMjcgYW5kIC0xMjgpLiBFbnN1
cmUgdGhhdAorICAgIGFjdHVhbC9leHBlY3RlZCBjYW4gbWlzbWF0Y2ggaW4gYm90aCBkaXJlY3Rp
b25zIGFuZCBwYXNzIHRoZSB0ZXN0LmAKKyAgKQorICAucGFyYW1zKHUgPT4KKyAgICB1IC8vCisg
ICAgICAuY29tYmluZSgnbW9kZScsIFsnYnl0ZXMnLCAnY29sb3JzJ10pCisgICAgICAuY29tYmlu
ZVdpdGhQYXJhbXMoWworICAgICAgICAvLworICAgICAgICB7IGZvcm1hdDogJ3I4c25vcm0nLCBf
bWF4VmFsdWU6IDEyNyB9LAorICAgICAgXSkKKyAgKQorICAuZm4oYXN5bmMgdCA9PiB7CisgICAg
Y29uc3QgeyBtb2RlLCBmb3JtYXQsIF9tYXhWYWx1ZSB9ID0gdC5wYXJhbXM7CisKKyAgICBjb25z
dCBkYXRhID0gWy1fbWF4VmFsdWUsIC1fbWF4VmFsdWUgLSAxXTsKKworICAgIGNvbnN0IHNpemUg
PSBbMiwgMV07CisgICAgY29uc3QgdGV4dHVyZSA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewor
ICAgICAgZm9ybWF0LAorICAgICAgc2l6ZSwKKyAgICAgIHVzYWdlOiBHUFVUZXh0dXJlVXNhZ2Uu
Q09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMsCisgICAgfSk7CisKKyAgICB0LnRy
YWNrRm9yQ2xlYW51cCh0ZXh0dXJlKTsKKyAgICB0LmRldmljZS5xdWV1ZS53cml0ZVRleHR1cmUo
eyB0ZXh0dXJlIH0sIG5ldyBJbnQ4QXJyYXkoZGF0YSksIHt9LCBzaXplKTsKKworICAgIGxldCBl
eHBUZXhlbFZpZXc7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICBjYXNlICdieXRlcyc6Cisg
ICAgICAgIHsKKyAgICAgICAgICAvLyBBY3R1YWwgdmFsdWUgc2hvdWxkIGJlIFstMTI3LC0xMjhd
LCBleHBlY3RlZCB2YWx1ZSBpcyBbLTEyOCwtMTI3XSwgYm90aCBzaG91bGQgcGFzcy4KKyAgICAg
ICAgICBjb25zdCBleHAgPSBbLV9tYXhWYWx1ZSAtIDEsIC1fbWF4VmFsdWVdOworICAgICAgICAg
IGV4cFRleGVsVmlldyA9IFRleGVsVmlldy5mcm9tVGV4ZWxzQXNCeXRlcygKKyAgICAgICAgICAg
IGZvcm1hdCwKKyAgICAgICAgICAgIGNvb3JkcyA9PiBuZXcgVWludDhBcnJheShbZXhwW2Nvb3Jk
cy54XV0pCisgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgJ2NvbG9ycyc6CisgICAgICAgIGV4cFRleGVsVmlldyA9IFRleGVsVmlldy5mcm9tVGV4ZWxz
QXNDb2xvcnMoZm9ybWF0LCBjb29yZHMgPT4gKHsgUjogLTEgfSkpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0ZXh0dXJlQ29udGVudElzT0tCeVQy
QigKKyAgICAgIHQsCisgICAgICB7IHRleHR1cmUgfSwKKyAgICAgIHNpemUsCisgICAgICB7IGV4
cFRleGVsVmlldyB9LAorICAgICAgeyBtYXhEaWZmVUxQc0Zvck5vcm1Gb3JtYXQ6IDAgfQorICAg
ICk7CisKKyAgICB0LmV4cGVjdE9LKHJlc3VsdCk7CisgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3dlYl9wbGF0Zm9ybS9jYW52YXMvcmVhZGJh
Y2tGcm9tV2ViR1BVQ2FudmFzLnNwZWMuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvd2ViX3BsYXRmb3JtL2NhbnZhcy9yZWFkYmFja0Zyb21XZWJHUFVDYW52YXMuc3Bl
Yy5qcwppbmRleCBlNDFkOWU4ZmYxZWEuLmU5YjQ1YjZjZTc1NyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3dlYl9wbGF0Zm9ybS9jYW52YXMvcmVhZGJh
Y2tGcm9tV2ViR1BVQ2FudmFzLnNwZWMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3dlYl9wbGF0Zm9ybS9jYW52YXMvcmVhZGJhY2tGcm9tV2ViR1BVQ2FudmFz
LnNwZWMuanMKQEAgLTgsNyArOCw3IEBAIGltcG9ydCB7IGFzc2VydCwgcmFjZVdpdGhSZWplY3RP
blRpbWVvdXQsIHVucmVhY2hhYmxlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0CiBpbXBvcnQg
eyBrQ2FudmFzVGV4dHVyZUZvcm1hdHMgfSBmcm9tICcuLi8uLi9jYXBhYmlsaXR5X2luZm8uanMn
OwogaW1wb3J0IHsgR1BVVGVzdCB9IGZyb20gJy4uLy4uL2dwdV90ZXN0LmpzJzsKIGltcG9ydCB7
IGNoZWNrRWxlbWVudHNFcXVhbCB9IGZyb20gJy4uLy4uL3V0aWwvY2hlY2tfY29udGVudHMuanMn
OwotaW1wb3J0IHsgYWxsQ2FudmFzVHlwZXMsIGNyZWF0ZUNhbnZhcywgY3JlYXRlT25zY3JlZW5D
YW52YXMgfSBmcm9tICcuLi8uLi91dGlsL2NyZWF0ZV9lbGVtZW50cy5qcyc7CitpbXBvcnQgeyBr
QWxsQ2FudmFzVHlwZXMsIGNyZWF0ZUNhbnZhcywgY3JlYXRlT25zY3JlZW5DYW52YXMgfSBmcm9t
ICcuLi8uLi91dGlsL2NyZWF0ZV9lbGVtZW50cy5qcyc7CiAKIGV4cG9ydCBjb25zdCBnID0gbWFr
ZVRlc3RHcm91cChHUFVUZXN0KTsKIApAQCAtMjkxLDggKzI5MSw4IEBAIGcudGVzdCgnZHJhd1Rv
MkRDYW52YXMnKQogICAucGFyYW1zKHUgPT4KICAgICB1IC8vCiAgICAgICAuY29tYmluZSgnZm9y
bWF0Jywga0NhbnZhc1RleHR1cmVGb3JtYXRzKQotICAgICAgLmNvbWJpbmUoJ3dlYmdwdUNhbnZh
c1R5cGUnLCBhbGxDYW52YXNUeXBlcykKLSAgICAgIC5jb21iaW5lKCdjYW52YXMyRFR5cGUnLCBh
bGxDYW52YXNUeXBlcykKKyAgICAgIC5jb21iaW5lKCd3ZWJncHVDYW52YXNUeXBlJywga0FsbENh
bnZhc1R5cGVzKQorICAgICAgLmNvbWJpbmUoJ2NhbnZhczJEVHlwZScsIGtBbGxDYW52YXNUeXBl
cykKICAgKQogICAuZm4oYXN5bmMgdCA9PiB7CiAgICAgY29uc3QgeyBmb3JtYXQsIHdlYmdwdUNh
bnZhc1R5cGUsIGNhbnZhczJEVHlwZSB9ID0gdC5wYXJhbXM7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvd2ViX3BsYXRmb3JtL2NvcHlUb1RleHR1cmUv
SW1hZ2VCaXRtYXAuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS93ZWJfcGxhdGZvcm0vY29weVRvVGV4dHVyZS9JbWFnZUJpdG1hcC5zcGVjLmpzCmluZGV4IDA3
Y2UwYWE3NzQ1Ny4uYWM5NjYyZTUxNGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvd2ViX3BsYXRmb3JtL2NvcHlUb1RleHR1cmUvSW1hZ2VCaXRtYXAu
c3BlYy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvd2ViX3Bs
YXRmb3JtL2NvcHlUb1RleHR1cmUvSW1hZ2VCaXRtYXAuc3BlYy5qcwpAQCAtMTIsODkgKzEyLDQ1
IEBAIFRPRE86IFRlc3QgSW1hZ2VCaXRtYXAgZ2VuZXJhdGVkIGZyb20gYWxsIHBvc3NpYmxlIElt
YWdlQml0bWFwU291cmNlLCByZWxldmFudCBJCiBUT0RPOiBUZXN0IHplcm8tc2l6ZWQgY29waWVz
IGZyb20gYWxsIHNvdXJjZXMgKGp1c3QgbWFrZSBzdXJlIHBhcmFtcyBjb3ZlciBpdCkgKGUuZy4g
MHgwLCAweDQsIDR4MCkuCiBgOwogaW1wb3J0IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4u
Ly4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9ncm91cC5qcyc7Ci1pbXBvcnQgeyB1bnJlYWNoYWJs
ZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL3V0aWwuanMnOwogaW1wb3J0IHsga1RleHR1
cmVGb3JtYXRJbmZvLCBrVmFsaWRUZXh0dXJlRm9ybWF0c0ZvckNvcHlFMlQgfSBmcm9tICcuLi8u
Li9jYXBhYmlsaXR5X2luZm8uanMnOwogaW1wb3J0IHsgQ29weVRvVGV4dHVyZVV0aWxzIH0gZnJv
bSAnLi4vLi4vdXRpbC9jb3B5X3RvX3RleHR1cmUuanMnOwotaW1wb3J0IHsga1RleGVsUmVwcmVz
ZW50YXRpb25JbmZvIH0gZnJvbSAnLi4vLi4vdXRpbC90ZXh0dXJlL3RleGVsX2RhdGEuanMnOwot
dmFyIENvbG9yOwotCi0vLyBDYWNoZSBmb3IgZ2VuZXJhdGVkIHBpeGVscy4KLShmdW5jdGlvbiAo
Q29sb3IpIHsKLSAgQ29sb3JbKENvbG9yWydSZWQnXSA9IDApXSA9ICdSZWQnOwotICBDb2xvclso
Q29sb3JbJ0dyZWVuJ10gPSAxKV0gPSAnR3JlZW4nOwotICBDb2xvclsoQ29sb3JbJ0JsdWUnXSA9
IDIpXSA9ICdCbHVlJzsKLSAgQ29sb3JbKENvbG9yWydCbGFjayddID0gMyldID0gJ0JsYWNrJzsK
LSAgQ29sb3JbKENvbG9yWydXaGl0ZSddID0gNCldID0gJ1doaXRlJzsKLSAgQ29sb3JbKENvbG9y
WydTZW1pdHJhbnNwYXJlbnRXaGl0ZSddID0gNSldID0gJ1NlbWl0cmFuc3BhcmVudFdoaXRlJzsK
LX0pKENvbG9yIHx8IChDb2xvciA9IHt9KSk7Ci1jb25zdCBnZW5lcmF0ZWRQaXhlbENhY2hlID0g
bmV3IE1hcCgpOwotCi1jbGFzcyBGIGV4dGVuZHMgQ29weVRvVGV4dHVyZVV0aWxzIHsKLSAgZ2Vu
ZXJhdGVQaXhlbChjb2xvciwgZm9ybWF0LCBoYXNUcmFuc3BhcmVudFBpeGVscykgewotICAgIGxl
dCBmb3JtYXRFbnRyeSA9IGdlbmVyYXRlZFBpeGVsQ2FjaGUuZ2V0KGZvcm1hdCk7Ci0gICAgaWYg
KGZvcm1hdEVudHJ5ID09PSB1bmRlZmluZWQpIHsKLSAgICAgIGZvcm1hdEVudHJ5ID0gbmV3IE1h
cCgpOwotICAgICAgZ2VuZXJhdGVkUGl4ZWxDYWNoZS5zZXQoZm9ybWF0LCBmb3JtYXRFbnRyeSk7
Ci0gICAgfQotCi0gICAgY29uc3QgY29sb3JFbnRyeSA9IGZvcm1hdEVudHJ5LmdldChjb2xvcik7
Ci0gICAgaWYgKGNvbG9yRW50cnkgPT09IHVuZGVmaW5lZCkgewotICAgICAgLy8gTm9uZSBvZiB0
aGUgZHN0IHRleHR1cmUgZm9ybWF0IGlzICd1aW50JyBvciAnc2ludCcsIHNvIHdlIGNhbiBhbHdh
eXMgdXNlIGZsb2F0IHZhbHVlLgotICAgICAgY29uc3QgcmVwID0ga1RleGVsUmVwcmVzZW50YXRp
b25JbmZvW2Zvcm1hdF07Ci0gICAgICBsZXQgcmdiYTsKLSAgICAgIHN3aXRjaCAoY29sb3IpIHsK
LSAgICAgICAgY2FzZSBDb2xvci5SZWQ6Ci0gICAgICAgICAgcmdiYSA9IHsgUjogMS4wLCBHOiAw
LjAsIEI6IDAuMCwgQTogMS4wIH07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29s
b3IuR3JlZW46Ci0gICAgICAgICAgcmdiYSA9IHsgUjogMC4wLCBHOiAxLjAsIEI6IDAuMCwgQTog
MS4wIH07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29sb3IuQmx1ZToKLSAgICAg
ICAgICByZ2JhID0geyBSOiAwLjAsIEc6IDAuMCwgQjogMS4wLCBBOiAxLjAgfTsKLSAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDb2xvci5CbGFjazoKLSAgICAgICAgICByZ2JhID0geyBS
OiAwLjAsIEc6IDAuMCwgQjogMC4wLCBBOiAxLjAgfTsKLSAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDb2xvci5XaGl0ZToKLSAgICAgICAgICByZ2JhID0geyBSOiAxLjAsIEc6IDEuMCwg
QjogMS4wLCBBOiAxLjAgfTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb2xvci5T
ZW1pdHJhbnNwYXJlbnRXaGl0ZToKLSAgICAgICAgICByZ2JhID0geyBSOiAxLjAsIEc6IDEuMCwg
QjogMS4wLCBBOiAwLjYgfTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICB1bnJlYWNoYWJsZSgpOwotICAgICAgfQotCi0gICAgICBjb25zdCBwaXhlbHMgPSBu
ZXcgVWludDhBcnJheShyZXAucGFjayhyZXAuZW5jb2RlKHJnYmEpKSk7Ci0gICAgICBmb3JtYXRF
bnRyeS5zZXQoY29sb3IsIHBpeGVscyk7Ci0gICAgfQogCi0gICAgcmV0dXJuIGZvcm1hdEVudHJ5
LmdldChjb2xvcik7Ci0gIH0KLQotICAvLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGdlbmVyYXRlIGlt
YWdlUGl4ZWxzIGJhc2VkIGlucHV0IGNvbmZpZ3MuCi0gIGdldEltYWdlUGl4ZWxzKHsgZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0LCBoYXNUcmFuc3BhcmVudFBpeGVscyB9KSB7Ci0gICAgY29uc3QgYnl0
ZXNQZXJQaXhlbCA9IGtUZXh0dXJlRm9ybWF0SW5mb1tmb3JtYXRdLmJ5dGVzUGVyQmxvY2s7Ci0K
LSAgICAvLyBHZW5lcmF0ZSBpbnB1dCBjb250ZW50cyBieSBpdGVyYXRpbmcgJ0NvbG9yJyBlbnVt
Ci0gICAgY29uc3QgaW1hZ2VQaXhlbHMgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoYnl0ZXNQZXJQ
aXhlbCAqIHdpZHRoICogaGVpZ2h0KTsKLSAgICBjb25zdCB0ZXN0Q29sb3JzID0gW0NvbG9yLlJl
ZCwgQ29sb3IuR3JlZW4sIENvbG9yLkJsdWUsIENvbG9yLkJsYWNrLCBDb2xvci5XaGl0ZV07Ci0g
ICAgaWYgKGhhc1RyYW5zcGFyZW50UGl4ZWxzKSB0ZXN0Q29sb3JzLnB1c2goQ29sb3IuU2VtaXRy
YW5zcGFyZW50V2hpdGUpOwotCi0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHQ7ICsraSkg
ewotICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB3aWR0aDsgKytqKSB7Ci0gICAgICAgIGNvbnN0
IHBpeGVsUG9zID0gaSAqIHdpZHRoICsgajsKLSAgICAgICAgY29uc3QgY3VycmVudFBpeGVsID0g
dGVzdENvbG9yc1twaXhlbFBvcyAlIHRlc3RDb2xvcnMubGVuZ3RoXTsKLSAgICAgICAgY29uc3Qg
cGl4ZWxEYXRhID0gdGhpcy5nZW5lcmF0ZVBpeGVsKGN1cnJlbnRQaXhlbCwgZm9ybWF0LCBoYXNU
cmFuc3BhcmVudFBpeGVscyk7Ci0gICAgICAgIGltYWdlUGl4ZWxzLnNldChwaXhlbERhdGEsIHBp
eGVsUG9zICogYnl0ZXNQZXJQaXhlbCk7Ci0gICAgICB9CitpbXBvcnQgeyBUZXhlbFZpZXcgfSBm
cm9tICcuLi8uLi91dGlsL3RleHR1cmUvdGV4ZWxfdmlldy5qcyc7CisKKy8vIE5vbmUgb2YgdGhl
IGRzdCB0ZXh0dXJlIGZvcm1hdCBpcyAndWludCcgb3IgJ3NpbnQnLCBzbyB3ZSBjYW4gYWx3YXlz
IHVzZSBmbG9hdCB2YWx1ZS4KK2NvbnN0IGtDb2xvcnMgPSB7CisgIFJlZDogeyBSOiAxLjAsIEc6
IDAuMCwgQjogMC4wLCBBOiAxLjAgfSwKKyAgR3JlZW46IHsgUjogMC4wLCBHOiAxLjAsIEI6IDAu
MCwgQTogMS4wIH0sCisgIEJsdWU6IHsgUjogMC4wLCBHOiAwLjAsIEI6IDEuMCwgQTogMS4wIH0s
CisgIEJsYWNrOiB7IFI6IDAuMCwgRzogMC4wLCBCOiAwLjAsIEE6IDEuMCB9LAorICBXaGl0ZTog
eyBSOiAxLjAsIEc6IDEuMCwgQjogMS4wLCBBOiAxLjAgfSwKKyAgU2VtaXRyYW5zcGFyZW50V2hp
dGU6IHsgUjogMS4wLCBHOiAxLjAsIEI6IDEuMCwgQTogMC42IH0sCit9OworCitjb25zdCBrVGVz
dENvbG9yc09wYXF1ZSA9IFtrQ29sb3JzLlJlZCwga0NvbG9ycy5HcmVlbiwga0NvbG9ycy5CbHVl
LCBrQ29sb3JzLkJsYWNrLCBrQ29sb3JzLldoaXRlXTsKKworY29uc3Qga1Rlc3RDb2xvcnNBbGwg
PSBbLi4ua1Rlc3RDb2xvcnNPcGFxdWUsIGtDb2xvcnMuU2VtaXRyYW5zcGFyZW50V2hpdGVdOwor
CitmdW5jdGlvbiBtYWtlVGVzdENvbG9yc1RleGVsVmlldyh7IHRlc3RDb2xvcnMsIGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgcHJlbXVsdGlwbGllZCwgZmxpcFkgfSkgeworICByZXR1cm4gVGV4ZWxW
aWV3LmZyb21UZXhlbHNBc0NvbG9ycyhmb3JtYXQsIGNvb3JkcyA9PiB7CisgICAgY29uc3QgeSA9
IGZsaXBZID8gaGVpZ2h0IC0gY29vcmRzLnkgLSAxIDogY29vcmRzLnk7CisgICAgY29uc3QgcGl4
ZWxQb3MgPSB5ICogd2lkdGggKyBjb29yZHMueDsKKyAgICBjb25zdCBjdXJyZW50UGl4ZWwgPSB0
ZXN0Q29sb3JzW3BpeGVsUG9zICUgdGVzdENvbG9ycy5sZW5ndGhdOworCisgICAgaWYgKHByZW11
bHRpcGxpZWQgJiYgY3VycmVudFBpeGVsLkEgIT09IDEuMCkgeworICAgICAgcmV0dXJuIHsKKyAg
ICAgICAgUjogY3VycmVudFBpeGVsLlIgKiBjdXJyZW50UGl4ZWwuQSwKKyAgICAgICAgRzogY3Vy
cmVudFBpeGVsLkcgKiBjdXJyZW50UGl4ZWwuQSwKKyAgICAgICAgQjogY3VycmVudFBpeGVsLkIg
KiBjdXJyZW50UGl4ZWwuQSwKKyAgICAgICAgQTogY3VycmVudFBpeGVsLkEsCisgICAgICB9Owor
ICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gY3VycmVudFBpeGVsOwogICAgIH0KLQotICAgIHJl
dHVybiBpbWFnZVBpeGVsczsKLSAgfQorICB9KTsKIH0KIAotZXhwb3J0IGNvbnN0IGcgPSBtYWtl
VGVzdEdyb3VwKEYpOworZXhwb3J0IGNvbnN0IGcgPSBtYWtlVGVzdEdyb3VwKENvcHlUb1RleHR1
cmVVdGlscyk7CiAKIGcudGVzdCgnZnJvbV9JbWFnZURhdGEnKQogICAuZGVzYygKQEAgLTE1MCw1
NSArMTA2LDQ4IEBAIGcudGVzdCgnZnJvbV9JbWFnZURhdGEnKQogICAgICAgc3JjRG9GbGlwWUR1
cmluZ0NvcHksCiAgICAgfSA9IHQucGFyYW1zOwogCi0gICAgLy8gR2VuZXJhdGUgaW5wdXQgY29u
dGVudHMgYnkgaXRlcmF0aW5nICdDb2xvcicgZW51bQotICAgIGNvbnN0IGltYWdlUGl4ZWxzID0g
dC5nZXRJbWFnZVBpeGVscyh7Ci0gICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywKKyAgICBjb25z
dCB0ZXN0Q29sb3JzID0ga1Rlc3RDb2xvcnNBbGw7CisKKyAgICAvLyBHZW5lcmF0ZSBjb3JyZWN0
IGV4cGVjdGVkIHZhbHVlcworICAgIGNvbnN0IHRleGVsVmlld1NvdXJjZSA9IG1ha2VUZXN0Q29s
b3JzVGV4ZWxWaWV3KHsKKyAgICAgIHRlc3RDb2xvcnMsCisgICAgICBmb3JtYXQ6ICdyZ2JhOHVu
b3JtJywgLy8gSW1hZ2VEYXRhIGlzIGFsd2F5cyBpbiByZ2JhOHVub3JtIGZvcm1hdC4KICAgICAg
IHdpZHRoLAogICAgICAgaGVpZ2h0LAotICAgICAgaGFzVHJhbnNwYXJlbnRQaXhlbHM6IHRydWUs
CisgICAgICBmbGlwWTogZmFsc2UsCisgICAgICBwcmVtdWx0aXBsaWVkOiBmYWxzZSwKKyAgICB9
KTsKKworICAgIGNvbnN0IGltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEod2lkdGgsIGhlaWdodCk7
CisgICAgdGV4ZWxWaWV3U291cmNlLndyaXRlVGV4dHVyZURhdGEoaW1hZ2VEYXRhLmRhdGEsIHsK
KyAgICAgIGJ5dGVzUGVyUm93OiB3aWR0aCAqIDQsCisgICAgICByb3dzUGVySW1hZ2U6IGhlaWdo
dCwKKyAgICAgIHN1YnJlY3RPcmlnaW46IFswLCAwXSwKKyAgICAgIHN1YnJlY3RTaXplOiB7IHdp
ZHRoLCBoZWlnaHQgfSwKICAgICB9KTsKIAotICAgIC8vIEdlbmVyYXRlIGNvcnJlY3QgZXhwZWN0
ZWQgdmFsdWVzCi0gICAgY29uc3QgaW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YShpbWFnZVBpeGVs
cywgd2lkdGgsIGhlaWdodCk7CiAgICAgY29uc3QgaW1hZ2VCaXRtYXAgPSBhd2FpdCBjcmVhdGVJ
bWFnZUJpdG1hcChpbWFnZURhdGEsIHsKICAgICAgIHByZW11bHRpcGx5QWxwaGE6IGFscGhhLAog
ICAgICAgaW1hZ2VPcmllbnRhdGlvbjogb3JpZW50YXRpb24sCiAgICAgfSk7CiAKICAgICBjb25z
dCBkc3QgPSB0LmRldmljZS5jcmVhdGVUZXh0dXJlKHsKLSAgICAgIHNpemU6IHsKLSAgICAgICAg
d2lkdGg6IGltYWdlQml0bWFwLndpZHRoLAotICAgICAgICBoZWlnaHQ6IGltYWdlQml0bWFwLmhl
aWdodCwKLSAgICAgICAgZGVwdGhPckFycmF5TGF5ZXJzOiAxLAotICAgICAgfSwKLQorICAgICAg
c2l6ZTogeyB3aWR0aCwgaGVpZ2h0IH0sCiAgICAgICBmb3JtYXQ6IGRzdENvbG9yRm9ybWF0LAog
ICAgICAgdXNhZ2U6CiAgICAgICAgIEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVCB8IEdQVVRleHR1
cmVVc2FnZS5DT1BZX1NSQyB8IEdQVVRleHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCwKICAg
ICB9KTsKIAotICAgIC8vIENvbnN0cnVjdCBleHBlY3RlZCB2YWx1ZSBmb3IgZGlmZmVyZW50IGRz
dCBjb2xvciBmb3JtYXQKLSAgICBjb25zdCBkc3RCeXRlc1BlclBpeGVsID0ga1RleHR1cmVGb3Jt
YXRJbmZvW2RzdENvbG9yRm9ybWF0XS5ieXRlc1BlckJsb2NrOwotICAgIGNvbnN0IHNyY1ByZW11
bHRpcGxpZWQgPSBhbHBoYSA9PT0gJ3ByZW11bHRpcGx5JzsKLSAgICBjb25zdCBzb3VyY2VJbWFn
ZUJpdG1hcFBpeGVscyA9IHQuZ2V0U291cmNlSW1hZ2VCaXRtYXBQaXhlbHMoCi0gICAgICBpbWFn
ZVBpeGVscywKLSAgICAgIHdpZHRoLAotICAgICAgaGVpZ2h0LAotICAgICAgc3JjUHJlbXVsdGlw
bGllZCwKLSAgICAgIG9yaWVudGF0aW9uID09PSAnZmxpcFknCi0gICAgKTsKLQotICAgIGNvbnN0
IGZvcm1hdCA9IGtUZXh0dXJlRm9ybWF0SW5mb1tkc3RDb2xvckZvcm1hdF0uYmFzZUZvcm1hdCA/
PyBkc3RDb2xvckZvcm1hdDsKLQotICAgIGNvbnN0IGV4cGVjdGVkUGl4ZWxzID0gdC5nZXRFeHBl
Y3RlZFBpeGVscygKLSAgICAgIHNvdXJjZUltYWdlQml0bWFwUGl4ZWxzLAorICAgIGNvbnN0IGV4
cEZvcm1hdCA9IGtUZXh0dXJlRm9ybWF0SW5mb1tkc3RDb2xvckZvcm1hdF0uYmFzZUZvcm1hdCA/
PyBkc3RDb2xvckZvcm1hdDsKKyAgICBjb25zdCBleHBlY3RGbGlwcGVkID0gc3JjRG9GbGlwWUR1
cmluZ0NvcHkgIT09IChvcmllbnRhdGlvbiA9PT0gJ2ZsaXBZJyk7CisgICAgY29uc3QgdGV4ZWxW
aWV3RXhwZWN0ZWQgPSBtYWtlVGVzdENvbG9yc1RleGVsVmlldyh7CisgICAgICB0ZXN0Q29sb3Jz
LAorICAgICAgZm9ybWF0OiBleHBGb3JtYXQsCiAgICAgICB3aWR0aCwKICAgICAgIGhlaWdodCwK
LSAgICAgIGZvcm1hdCwKLSAgICAgIHNyY1ByZW11bHRpcGxpZWQsCi0gICAgICBkc3RQcmVtdWx0
aXBsaWVkLAotICAgICAgc3JjRG9GbGlwWUR1cmluZ0NvcHkKLSAgICApOworICAgICAgZmxpcFk6
IGV4cGVjdEZsaXBwZWQsCisgICAgICBwcmVtdWx0aXBsaWVkOiBkc3RQcmVtdWx0aXBsaWVkLAor
ICAgIH0pOwogCiAgICAgdC5kb1Rlc3RBbmRDaGVja1Jlc3VsdCgKICAgICAgIHsgc291cmNlOiBp
bWFnZUJpdG1hcCwgb3JpZ2luOiB7IHg6IDAsIHk6IDAgfSwgZmxpcFk6IHNyY0RvRmxpcFlEdXJp
bmdDb3B5IH0sCkBAIC0yMDksMTAgKzE1OCw5IEBAIGcudGVzdCgnZnJvbV9JbWFnZURhdGEnKQog
ICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IGRzdFByZW11bHRpcGxpZWQsCiAgICAgICB9LAog
Ci0gICAgICB7IHdpZHRoOiBpbWFnZUJpdG1hcC53aWR0aCwgaGVpZ2h0OiBpbWFnZUJpdG1hcC5o
ZWlnaHQsIGRlcHRoT3JBcnJheUxheWVyczogMSB9LAotICAgICAgZHN0Qnl0ZXNQZXJQaXhlbCwK
LSAgICAgIGV4cGVjdGVkUGl4ZWxzLAotICAgICAgZHN0Q29sb3JGb3JtYXQKKyAgICAgIHRleGVs
Vmlld0V4cGVjdGVkLAorICAgICAgeyB3aWR0aCwgaGVpZ2h0LCBkZXB0aE9yQXJyYXlMYXllcnM6
IDEgfSwKKyAgICAgIHsgbWF4RGlmZlVMUHNGb3JGbG9hdEZvcm1hdDogMCwgbWF4RGlmZlVMUHNG
b3JOb3JtRm9ybWF0OiAwIH0KICAgICApOwogICB9KTsKIApAQCAtMjkyLDE0ICsyNDAsMjMgQEAg
Zy50ZXN0KCdmcm9tX2NhbnZhcycpCiAgICAgLy8gR2VuZXJhdGUgbm9uLXRyYW5zcGFyZW50IHBp
eGVsIGRhdGEgdG8gYXZvaWQgY2FudmFzCiAgICAgLy8gZGlmZmVyZW50IG9wdCBiZWhhdmlvdXIg
b24gcHV0SW1hZ2VEYXRhKCkKICAgICAvLyBmcm9tIGJyb3dzZXJzLgotICAgIGNvbnN0IGltYWdl
UGl4ZWxzID0gdC5nZXRJbWFnZVBpeGVscyh7Ci0gICAgICBmb3JtYXQ6ICdyZ2JhOHVub3JtJywK
KyAgICBjb25zdCB0ZXhlbFZpZXdTb3VyY2UgPSBtYWtlVGVzdENvbG9yc1RleGVsVmlldyh7Cisg
ICAgICB0ZXN0Q29sb3JzOiBrVGVzdENvbG9yc09wYXF1ZSwKKyAgICAgIGZvcm1hdDogJ3JnYmE4
dW5vcm0nLCAvLyBJbWFnZURhdGEgaXMgYWx3YXlzIGluIHJnYmE4dW5vcm0gZm9ybWF0LgogICAg
ICAgd2lkdGgsCiAgICAgICBoZWlnaHQsCi0gICAgICBoYXNUcmFuc3BhcmVudFBpeGVsczogZmFs
c2UsCisgICAgICBmbGlwWTogZmFsc2UsCisgICAgICBwcmVtdWx0aXBsaWVkOiBmYWxzZSwKICAg
ICB9KTsKIAotICAgIGNvbnN0IGltYWdlRGF0YSA9IG5ldyBJbWFnZURhdGEoaW1hZ2VQaXhlbHMs
IHdpZHRoLCBoZWlnaHQpOworICAgIC8vIEdlbmVyYXRlIGNvcnJlY3QgZXhwZWN0ZWQgdmFsdWVz
CisgICAgY29uc3QgaW1hZ2VEYXRhID0gbmV3IEltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0KTsKKyAg
ICB0ZXhlbFZpZXdTb3VyY2Uud3JpdGVUZXh0dXJlRGF0YShpbWFnZURhdGEuZGF0YSwgeworICAg
ICAgYnl0ZXNQZXJSb3c6IHdpZHRoICogNCwKKyAgICAgIHJvd3NQZXJJbWFnZTogaGVpZ2h0LAor
ICAgICAgc3VicmVjdE9yaWdpbjogWzAsIDBdLAorICAgICAgc3VicmVjdFNpemU6IHsgd2lkdGgs
IGhlaWdodCB9LAorICAgIH0pOwogCiAgICAgLy8gVXNlIHB1dEltYWdlRGF0YSB0byBwcmV2ZW50
IGNvbG9yIHNwYWNlIGNvbnZlcnNpb24uCiAgICAgaW1hZ2VDYW52YXNDb250ZXh0LnB1dEltYWdl
RGF0YShpbWFnZURhdGEsIDAsIDApOwpAQCAtMzEyLDM4ICsyNjksMjIgQEAgZy50ZXN0KCdmcm9t
X2NhbnZhcycpCiAgICAgfSk7CiAKICAgICBjb25zdCBkc3QgPSB0LmRldmljZS5jcmVhdGVUZXh0
dXJlKHsKLSAgICAgIHNpemU6IHsKLSAgICAgICAgd2lkdGg6IGltYWdlQml0bWFwLndpZHRoLAot
ICAgICAgICBoZWlnaHQ6IGltYWdlQml0bWFwLmhlaWdodCwKLSAgICAgICAgZGVwdGhPckFycmF5
TGF5ZXJzOiAxLAotICAgICAgfSwKLQorICAgICAgc2l6ZTogeyB3aWR0aCwgaGVpZ2h0IH0sCiAg
ICAgICBmb3JtYXQ6IGRzdENvbG9yRm9ybWF0LAogICAgICAgdXNhZ2U6CiAgICAgICAgIEdQVVRl
eHR1cmVVc2FnZS5DT1BZX0RTVCB8IEdQVVRleHR1cmVVc2FnZS5DT1BZX1NSQyB8IEdQVVRleHR1
cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCwKICAgICB9KTsKIAotICAgIGNvbnN0IGRzdEJ5dGVz
UGVyUGl4ZWwgPSBrVGV4dHVyZUZvcm1hdEluZm9bZHN0Q29sb3JGb3JtYXRdLmJ5dGVzUGVyQmxv
Y2s7Ci0KLSAgICBjb25zdCBzb3VyY2VJbWFnZUJpdG1hcFBpeGVscyA9IHQuZ2V0U291cmNlSW1h
Z2VCaXRtYXBQaXhlbHMoCi0gICAgICBpbWFnZVBpeGVscywKKyAgICBjb25zdCBleHBGb3JtYXQg
PSBrVGV4dHVyZUZvcm1hdEluZm9bZHN0Q29sb3JGb3JtYXRdLmJhc2VGb3JtYXQgPz8gZHN0Q29s
b3JGb3JtYXQ7CisgICAgY29uc3QgZXhwZWN0RmxpcHBlZCA9IHNyY0RvRmxpcFlEdXJpbmdDb3B5
ICE9PSAob3JpZW50YXRpb24gPT09ICdmbGlwWScpOworICAgIGNvbnN0IHRleGVsVmlld0V4cGVj
dGVkID0gbWFrZVRlc3RDb2xvcnNUZXhlbFZpZXcoeworICAgICAgdGVzdENvbG9yczoga1Rlc3RD
b2xvcnNPcGFxdWUsCisgICAgICBmb3JtYXQ6IGV4cEZvcm1hdCwKICAgICAgIHdpZHRoLAogICAg
ICAgaGVpZ2h0LAotICAgICAgdHJ1ZSwKLSAgICAgIG9yaWVudGF0aW9uID09PSAnZmxpcFknCi0g
ICAgKTsKLQotICAgIGNvbnN0IGZvcm1hdCA9IGtUZXh0dXJlRm9ybWF0SW5mb1tkc3RDb2xvckZv
cm1hdF0uYmFzZUZvcm1hdCA/PyBkc3RDb2xvckZvcm1hdDsKLQotICAgIGNvbnN0IGV4cGVjdGVk
UGl4ZWxzID0gdC5nZXRFeHBlY3RlZFBpeGVscygKLSAgICAgIHNvdXJjZUltYWdlQml0bWFwUGl4
ZWxzLAotICAgICAgd2lkdGgsCi0gICAgICBoZWlnaHQsCi0gICAgICBmb3JtYXQsCi0gICAgICB0
cnVlLAotICAgICAgZHN0UHJlbXVsdGlwbGllZCwKLSAgICAgIHNyY0RvRmxpcFlEdXJpbmdDb3B5
Ci0gICAgKTsKKyAgICAgIGZsaXBZOiBleHBlY3RGbGlwcGVkLAorICAgICAgcHJlbXVsdGlwbGll
ZDogZHN0UHJlbXVsdGlwbGllZCwKKyAgICB9KTsKIAogICAgIHQuZG9UZXN0QW5kQ2hlY2tSZXN1
bHQoCiAgICAgICB7IHNvdXJjZTogaW1hZ2VCaXRtYXAsIG9yaWdpbjogeyB4OiAwLCB5OiAwIH0s
IGZsaXBZOiBzcmNEb0ZsaXBZRHVyaW5nQ29weSB9LApAQCAtMzU0LDkgKzI5NSw4IEBAIGcudGVz
dCgnZnJvbV9jYW52YXMnKQogICAgICAgICBwcmVtdWx0aXBsaWVkQWxwaGE6IGRzdFByZW11bHRp
cGxpZWQsCiAgICAgICB9LAogCi0gICAgICB7IHdpZHRoOiBpbWFnZUJpdG1hcC53aWR0aCwgaGVp
Z2h0OiBpbWFnZUJpdG1hcC5oZWlnaHQsIGRlcHRoT3JBcnJheUxheWVyczogMSB9LAotICAgICAg
ZHN0Qnl0ZXNQZXJQaXhlbCwKLSAgICAgIGV4cGVjdGVkUGl4ZWxzLAotICAgICAgZHN0Q29sb3JG
b3JtYXQKKyAgICAgIHRleGVsVmlld0V4cGVjdGVkLAorICAgICAgeyB3aWR0aCwgaGVpZ2h0LCBk
ZXB0aE9yQXJyYXlMYXllcnM6IDEgfSwKKyAgICAgIHsgbWF4RGlmZlVMUHNGb3JGbG9hdEZvcm1h
dDogMCwgbWF4RGlmZlVMUHNGb3JOb3JtRm9ybWF0OiAwIH0KICAgICApOwogICB9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS93ZWJfcGxhdGZvcm0v
Y29weVRvVGV4dHVyZS9jYW52YXMuc3BlYy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS93ZWJfcGxhdGZvcm0vY29weVRvVGV4dHVyZS9jYW52YXMuc3BlYy5qcwppbmRl
eCA2NzhjMTE5MWNlMmIuLjE2YjE3MTgyZGEwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3dlYl9wbGF0Zm9ybS9jb3B5VG9UZXh0dXJlL2NhbnZhcy5z
cGVjLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS93ZWJfcGxh
dGZvcm0vY29weVRvVGV4dHVyZS9jYW52YXMuc3BlYy5qcwpAQCAtMiwxOCArMiwxNCBAQAogICog
QVVUTy1HRU5FUkFURUQgLSBETyBOT1QgRURJVC4gU291cmNlOiBodHRwczovL2dpdGh1Yi5jb20v
Z3B1d2ViL2N0cwogICoqLyBleHBvcnQgY29uc3QgZGVzY3JpcHRpb24gPSBgCiBjb3B5VG9UZXh0
dXJlIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgYW5kIE9mZnNjcmVlbkNhbnZhcyBzb3VyY2VzLgot
Ci1UT0RPOiBBZGQgdGVzdHMgZm9yIGZsaXBZCiBgOwotaW1wb3J0IHsgZ2V0UmVzb3VyY2VQYXRo
IH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZyYW1ld29yay9yZXNvdXJjZXMuanMnOwogaW1wb3J0
IHsgbWFrZVRlc3RHcm91cCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mcmFtZXdvcmsvdGVzdF9n
cm91cC5qcyc7Ci1pbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91
dGlsL3V0aWwuanMnOwogaW1wb3J0IHsga1RleHR1cmVGb3JtYXRJbmZvLCBrVmFsaWRUZXh0dXJl
Rm9ybWF0c0ZvckNvcHlFMlQgfSBmcm9tICcuLi8uLi9jYXBhYmlsaXR5X2luZm8uanMnOwogaW1w
b3J0IHsgQ29weVRvVGV4dHVyZVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb3B5X3RvX3RleHR1
cmUuanMnOwotaW1wb3J0IHsgYWxsQ2FudmFzVHlwZXMsIGNyZWF0ZUNhbnZhcyB9IGZyb20gJy4u
Ly4uL3V0aWwvY3JlYXRlX2VsZW1lbnRzLmpzJzsKK2ltcG9ydCB7IGtBbGxDYW52YXNUeXBlcywg
Y3JlYXRlQ2FudmFzIH0gZnJvbSAnLi4vLi4vdXRpbC9jcmVhdGVfZWxlbWVudHMuanMnOwogCiBj
bGFzcyBGIGV4dGVuZHMgQ29weVRvVGV4dHVyZVV0aWxzIHsKLSAgaW5pdDJEQ2FudmFzQ29udGVu
dFdpdGhDb2xvclNwYWNlKHsgd2lkdGgsIGhlaWdodCwgcGFpbnRPcGFxdWVSZWN0cywgY29sb3JT
cGFjZSB9KSB7CisgIGluaXQyRENhbnZhc0NvbnRlbnRXaXRoQ29sb3JTcGFjZSh7IHdpZHRoLCBo
ZWlnaHQsIGNvbG9yU3BhY2UgfSkgewogICAgIGNvbnN0IGNhbnZhcyA9IGNyZWF0ZUNhbnZhcyh0
aGlzLCAnb25zY3JlZW4nLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGxldCBjYW52YXNDb250ZXh0
ID0gbnVsbDsKQEAgLTM2LDcgKzMyLDcgQEAgY2xhc3MgRiBleHRlbmRzIENvcHlUb1RleHR1cmVV
dGlscyB7CiAgICAgY29uc3QgcmVjdFdpZHRoID0gTWF0aC5mbG9vcih3aWR0aCAvIDIpOwogICAg
IGNvbnN0IHJlY3RIZWlnaHQgPSBNYXRoLmZsb29yKGhlaWdodCAvIDIpOwogCi0gICAgY29uc3Qg
YWxwaGFWYWx1ZSA9IHBhaW50T3BhcXVlUmVjdHMgPyAyNTUgOiAxNTM7CisgICAgY29uc3QgYWxw
aGFWYWx1ZSA9IDE1MzsKIAogICAgIGxldCBwaXhlbFN0YXJ0UG9zID0gMDsKICAgICAvLyBSZWQ7
CkBAIC05Nyw3ICs5Myw3IEBAIGNsYXNzIEYgZXh0ZW5kcyBDb3B5VG9UZXh0dXJlVXRpbHMgewog
ICB9CiAKICAgLy8gTUFJTlRFTkFOQ0VfVE9ETzogQ2FjaGUgdGhlIGdlbmVyYXRlZCBjYW52YXMg
dG8gYXZvaWQgZHVwbGljYXRlZCBpbml0aWFsaXphdGlvbi4KLSAgaW5pdDJEQ2FudmFzQ29udGVu
dCh7IGNhbnZhc1R5cGUsIHdpZHRoLCBoZWlnaHQsIHBhaW50T3BhcXVlUmVjdHMgfSkgeworICBp
bml0MkRDYW52YXNDb250ZW50KHsgY2FudmFzVHlwZSwgd2lkdGgsIGhlaWdodCB9KSB7CiAgICAg
Y29uc3QgY2FudmFzID0gY3JlYXRlQ2FudmFzKHRoaXMsIGNhbnZhc1R5cGUsIHdpZHRoLCBoZWln
aHQpOwogCiAgICAgbGV0IGNhbnZhc0NvbnRleHQgPSBudWxsOwpAQCAtMTA3LDEyICsxMDMsOCBA
QCBjbGFzcyBGIGV4dGVuZHMgQ29weVRvVGV4dHVyZVV0aWxzIHsKICAgICAgIHRoaXMuc2tpcChj
YW52YXNUeXBlICsgJyBjYW52YXMgMmQgY29udGV4dCBub3QgYXZhaWxhYmxlJyk7CiAgICAgfQog
Ci0gICAgLy8gVGhlIHJnYjEwYTJ1bm9ybSBkc3QgdGV4dHVyZSB3aWxsIGhhdmUgdGlueSBlcnJv
cnMgd2hlbiB3ZSBjb21wYXJlIGFjdHVhbCBhbmQgZXhwZWN0YXRpb24uCi0gICAgLy8gVGhpcyBp
cyBkdWUgdG8gdGhlIGNvbnZlcnQgZnJvbSA4LWJpdCB0byAxMC1iaXQgY29tYmluZWQgd2l0aCBh
bHBoYSB2YWx1ZSBvcHMuIFNvIGZvcgotICAgIC8vIHJnYjEwYTJ1bm9ybSBkc3QgdGV4dHVyZXMs
IHdlJ2xsIHNldCBhbHBoYVZhbHVlIHRvIDEuMCB0byB0ZXN0LgotICAgIGNvbnN0IGFscGhhVmFs
dWUgPSBwYWludE9wYXF1ZVJlY3RzID8gMS4wIDogMC42OwogICAgIGNvbnN0IGN0eCA9IGNhbnZh
c0NvbnRleHQ7Ci0gICAgdGhpcy5wYWludDJEQ2FudmFzKGN0eCwgd2lkdGgsIGhlaWdodCwgYWxw
aGFWYWx1ZSk7CisgICAgdGhpcy5wYWludDJEQ2FudmFzKGN0eCwgd2lkdGgsIGhlaWdodCwgMC42
KTsKIAogICAgIHJldHVybiB7IGNhbnZhcywgY2FudmFzQ29udGV4dCB9OwogICB9CkBAIC0xMzYs
NyArMTI4LDcgQEAgY2xhc3MgRiBleHRlbmRzIENvcHlUb1RleHR1cmVVdGlscyB7CiAgIH0KIAog
ICAvLyBNQUlOVEVOQU5DRV9UT0RPOiBDYWNoZSB0aGUgZ2VuZXJhdGVkIGNhbnZhcyB0byBhdm9p
ZCBkdXBsaWNhdGVkIGluaXRpYWxpemF0aW9uLgotICBpbml0R0xDYW52YXNDb250ZW50KHsgY2Fu
dmFzVHlwZSwgY29udGV4dE5hbWUsIHdpZHRoLCBoZWlnaHQsIHByZW11bHRpcGxpZWQsIHBhaW50
T3BhcXVlUmVjdHMgfSkgeworICBpbml0R0xDYW52YXNDb250ZW50KHsgY2FudmFzVHlwZSwgY29u
dGV4dE5hbWUsIHdpZHRoLCBoZWlnaHQsIHByZW11bHRpcGxpZWQgfSkgewogICAgIGNvbnN0IGNh
bnZhcyA9IGNyZWF0ZUNhbnZhcyh0aGlzLCBjYW52YXNUeXBlLCB3aWR0aCwgaGVpZ2h0KTsKIAog
ICAgIC8vIE1BSU5URU5BTkNFX1RPRE86IFdvcmthcm91bmQgZm9yIEB0eXBlcy9vZmZzY3JlZW5j
YW52YXMgbWlzc2luZyBhbiBvdmVybG9hZCBvZgpAQCAtMTUzLDcgKzE0NSw3IEBAIGNsYXNzIEYg
ZXh0ZW5kcyBDb3B5VG9UZXh0dXJlVXRpbHMgewogICAgIGNvbnN0IHJlY3RXaWR0aCA9IE1hdGgu
Zmxvb3Iod2lkdGggLyAyKTsKICAgICBjb25zdCByZWN0SGVpZ2h0ID0gTWF0aC5mbG9vcihoZWln
aHQgLyAyKTsKIAotICAgIGNvbnN0IGFscGhhVmFsdWUgPSBwYWludE9wYXF1ZVJlY3RzID8gMS4w
IDogMC42OworICAgIGNvbnN0IGFscGhhVmFsdWUgPSAwLjY7CiAgICAgY29uc3QgY29sb3JWYWx1
ZSA9IHByZW11bHRpcGxpZWQgPyBhbHBoYVZhbHVlIDogMS4wOwogCiAgICAgLy8gRm9yIHdlYmds
L3dlYmdsMiBjb250ZXh0IGNhbnZhcywgaWYgdGhlIGNvbnRleHQgY3JlYXRlZCB3aXRoIHByZW11
bHRpcGxpZWRBbHBoYSBhdHRyaWJ1dGVzLApAQCAtMTgwLDExICsxNzIsMTEgQEAgY2xhc3MgRiBl
eHRlbmRzIENvcHlUb1RleHR1cmVVdGlscyB7CiAgICAgcmV0dXJuIHsgY2FudmFzLCBjYW52YXND
b250ZXh0OiBnbCB9OwogICB9CiAKLSAgZ2V0SW5pdEdQVUNhbnZhc0RhdGEod2lkdGgsIGhlaWdo
dCwgcHJlbXVsdGlwbGllZCwgcGFpbnRPcGFxdWVSZWN0cykgeworICBnZXRJbml0R1BVQ2FudmFz
RGF0YSh3aWR0aCwgaGVpZ2h0LCBwcmVtdWx0aXBsaWVkKSB7CiAgICAgY29uc3QgcmVjdFdpZHRo
ID0gTWF0aC5mbG9vcih3aWR0aCAvIDIpOwogICAgIGNvbnN0IHJlY3RIZWlnaHQgPSBNYXRoLmZs
b29yKGhlaWdodCAvIDIpOwogCi0gICAgY29uc3QgYWxwaGFWYWx1ZSA9IHBhaW50T3BhcXVlUmVj
dHMgPyAyNTUgOiAxNTM7CisgICAgY29uc3QgYWxwaGFWYWx1ZSA9IDE1MzsKICAgICBjb25zdCBj
b2xvclZhbHVlID0gcHJlbXVsdGlwbGllZCA/IGFscGhhVmFsdWUgOiAyNTU7CiAKICAgICAvLyBC
R1JBOFVub3JtIHRleHR1cmUKQEAgLTIyOSw3ICsyMjEsNyBAQCBjbGFzcyBGIGV4dGVuZHMgQ29w
eVRvVGV4dHVyZVV0aWxzIHsKICAgICByZXR1cm4gaW5pdGlhbERhdGE7CiAgIH0KIAotICBpbml0
R1BVQ2FudmFzQ29udGVudCh7IGRldmljZSwgY2FudmFzVHlwZSwgd2lkdGgsIGhlaWdodCwgcHJl
bXVsdGlwbGllZCwgcGFpbnRPcGFxdWVSZWN0cyB9KSB7CisgIGluaXRHUFVDYW52YXNDb250ZW50
KHsgZGV2aWNlLCBjYW52YXNUeXBlLCB3aWR0aCwgaGVpZ2h0LCBwcmVtdWx0aXBsaWVkIH0pIHsK
ICAgICBjb25zdCBjYW52YXMgPSBjcmVhdGVDYW52YXModGhpcywgY2FudmFzVHlwZSwgd2lkdGgs
IGhlaWdodCk7CiAKICAgICBjb25zdCBncHVDb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJ3dl
YmdwdScpOwpAQCAtMjQ4LDcgKzI0MCw3IEBAIGNsYXNzIEYgZXh0ZW5kcyBDb3B5VG9UZXh0dXJl
VXRpbHMgewogICAgIH0pOwogCiAgICAgLy8gQkdSQThVbm9ybSB0ZXh0dXJlCi0gICAgY29uc3Qg
aW5pdGlhbERhdGEgPSB0aGlzLmdldEluaXRHUFVDYW52YXNEYXRhKHdpZHRoLCBoZWlnaHQsIHBy
ZW11bHRpcGxpZWQsIHBhaW50T3BhcXVlUmVjdHMpOworICAgIGNvbnN0IGluaXRpYWxEYXRhID0g
dGhpcy5nZXRJbml0R1BVQ2FudmFzRGF0YSh3aWR0aCwgaGVpZ2h0LCBwcmVtdWx0aXBsaWVkKTsK
ICAgICBjb25zdCBjYW52YXNUZXh0dXJlID0gZ3B1Q29udGV4dC5nZXRDdXJyZW50VGV4dHVyZSgp
OwogICAgIGRldmljZS5xdWV1ZS53cml0ZVRleHR1cmUoCiAgICAgICB7IHRleHR1cmU6IGNhbnZh
c1RleHR1cmUgfSwKQEAgLTI4MiwxNSArMjc0LDEwIEBAIGNsYXNzIEYgZXh0ZW5kcyBDb3B5VG9U
ZXh0dXJlVXRpbHMgewogICAgIHJldHVybiB0aGlzLmRvRmxpcFkoc291cmNlUGl4ZWxzLCB3aWR0
aCwgaGVpZ2h0LCBieXRlc1BlclBpeGVsKTsKICAgfQogCi0gIGNhbGN1bGF0ZVNvdXJjZUNvbnRl
bnRPbkNQVSh3aWR0aCwgaGVpZ2h0LCBwcmVtdWx0aXBsaWVkQWxwaGEsIHBhaW50T3BhcXVlUmVj
dHMpIHsKKyAgY2FsY3VsYXRlU291cmNlQ29udGVudE9uQ1BVKHdpZHRoLCBoZWlnaHQsIHByZW11
bHRpcGxpZWRBbHBoYSkgewogICAgIGNvbnN0IGJ5dGVzUGVyUGl4ZWwgPSA0OwogCi0gICAgY29u
c3QgcmdiYVBpeGVscyA9IHRoaXMuZ2V0SW5pdEdQVUNhbnZhc0RhdGEoCi0gICAgICB3aWR0aCwK
LSAgICAgIGhlaWdodCwKLSAgICAgIHByZW11bHRpcGxpZWRBbHBoYSwKLSAgICAgIHBhaW50T3Bh
cXVlUmVjdHMKLSAgICApOworICAgIGNvbnN0IHJnYmFQaXhlbHMgPSB0aGlzLmdldEluaXRHUFVD
YW52YXNEYXRhKHdpZHRoLCBoZWlnaHQsIHByZW11bHRpcGxpZWRBbHBoYSk7CiAKICAgICAvLyBU
aGUgc291cmNlIGNhbnZhcyBoYXMgYmdyYTh1bm9ybSBiYWNrIHJlc291cmNlLiBXZQogICAgIC8v
IHN3aXp6bGUgdGhlIGNoYW5uZWxzIHRvIGFsaWduIHdpdGggMmQvd2ViZ2wgY2FudmFzIGFuZApA
QCAtMzExLDE3ICsyOTgsNiBAQCBjbGFzcyBGIGV4dGVuZHMgQ29weVRvVGV4dHVyZVV0aWxzIHsK
IAogICAgIHJldHVybiByZ2JhUGl4ZWxzOwogICB9Ci0KLSAgZ2V0VGVzdEltYWdlVVJMQnlDb2xv
clNwYWNlKGNvbG9yU3BhY2UpIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICAgIGNh
c2UgJ3NyZ2InOgotICAgICAgICByZXR1cm4gZ2V0UmVzb3VyY2VQYXRoKCdXZWJraXQtbG9nby1z
UkdCLnBuZycpOwotICAgICAgY2FzZSAnZGlzcGxheS1wMyc6Ci0gICAgICAgIHJldHVybiBnZXRS
ZXNvdXJjZVBhdGgoJ1dlYmtpdC1sb2dvLVAzLnBuZycpOwotICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgdW5yZWFjaGFibGUoKTsKLSAgICB9Ci0gIH0KIH0KIAogZXhwb3J0IGNvbnN0IGcgPSBtYWtl
VGVzdEdyb3VwKEYpOwpAQCAtMzUyLDE0ICszMjgsMTMgQEAgZy50ZXN0KCdjb3B5X2NvbnRlbnRz
X2Zyb21fMmRfY29udGV4dF9jYW52YXMnKQogICAtIFZhbGlkIGRlc3QgYWxwaGFNb2RlCiAgIC0g
VmFsaWQgJ2ZsaXBZJyBjb25maWcgaW4gJ0dQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UnIChuYW1l
ZCAnc3JjRG9GbGlwWUR1cmluZ0NvcHknIGluIGNhc2VzKQogICAtIFRPRE8oIzkxMyk6IGNvbG9y
IHNwYWNlIHRlc3RzIG5lZWQgdG8gYmUgYWRkZWQKLSAgLSBUT0RPOiBBZGQgZXJyb3IgdG9sZXJh
bmNlIGZvciByZ2IxMGEydW5vcm0gZHN0IHRleHR1cmUgZm9ybWF0CiAKICAgQW5kIHRoZSBleHBl
Y3RlZCByZXN1bHRzIGFyZSBhbGwgcGFzc2VkLgogICBgCiAgICkKICAgLnBhcmFtcyh1ID0+CiAg
ICAgdQotICAgICAgLmNvbWJpbmUoJ2NhbnZhc1R5cGUnLCBhbGxDYW52YXNUeXBlcykKKyAgICAg
IC5jb21iaW5lKCdjYW52YXNUeXBlJywga0FsbENhbnZhc1R5cGVzKQogICAgICAgLmNvbWJpbmUo
J2RzdENvbG9yRm9ybWF0Jywga1ZhbGlkVGV4dHVyZUZvcm1hdHNGb3JDb3B5RTJUKQogICAgICAg
LmNvbWJpbmUoJ2RzdFByZW11bHRpcGxpZWQnLCBbdHJ1ZSwgZmFsc2VdKQogICAgICAgLmNvbWJp
bmUoJ3NyY0RvRmxpcFlEdXJpbmdDb3B5JywgW3RydWUsIGZhbHNlXSkKQEAgLTM3NywyMCArMzUy
LDEwIEBAIGcudGVzdCgnY29weV9jb250ZW50c19mcm9tXzJkX2NvbnRleHRfY2FudmFzJykKICAg
ICAgIHNyY0RvRmxpcFlEdXJpbmdDb3B5LAogICAgIH0gPSB0LnBhcmFtczsKIAotICAgIC8vIFdo
ZW4gZHN0IHRleHR1cmUgZm9ybWF0IGlzIHJnYjEwYTJ1bm9ybSwgdGhlIGdlbmVyYXRlZCBleHBl
Y3RlZCB2YWx1ZSBvZiB0aGUgcmVzdWx0Ci0gICAgLy8gbWF5IGhhdmUgdGlueSBlcnJvcnMgY29t
cGFyZWQgdG8gdGhlIGFjdHVhbCByZXN1bHQgd2hlbiB0aGUgY2hhbm5lbCB2YWx1ZSBpcwotICAg
IC8vIG5vdCAxLjAgb3IgMC4wLgotICAgIC8vIEZvciBleGFtcGxlLCB3ZSBpbml0IHRoZSBwaXhl
bCB3aXRoIHIgY2hhbm5lbCB0byAwLjYuIEFuZCB0aGUgZGVub3JtYWxpemVkIHZhbHVlIGZvcgot
ICAgIC8vIDEwLWJpdCBjaGFubmVsIGlzIDYxMy44LCB3aGljaCBuZWVkcyB0byBjYWxsICJyb3Vu
ZCIgb3Igb3RoZXIgZnVuY3Rpb24gdG8gZ2V0IGFuIGludGVnZXIuCi0gICAgLy8gSXQgaXMgcG9z
c2libGUgdGhhdCBncHUgYWRvcHQgZGlmZmVyZW50ICJyb3VuZCIgYXMgb3VyIGNwdSBpbXBsZW1l
bnRhdGlvbih3ZSB1c2UgTWF0aC5yb3VuZCgpKQotICAgIC8vIGFuZCBpdCB3aWxsIGdlbmVyYXRl
IHRpbnkgZXJyb3JzLgotICAgIC8vIFNvIHRoZSBjYXNlcyB3aXRoIHJnYjEwYTJ1bm9ybSBkc3Qg
dGV4dHVyZSBmb3JtYXQgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJ5IHBhaW50aW5nIG9wYXF1ZSBy
ZWN0cwotICAgIC8vIHRvIGVuc3VyZSB0aGV5IHdpbGwgaGF2ZSBzdGFibGUgcmVzdWx0IGFmdGVy
IGFscGhhT3BzKHNob3VsZCBrZWVwIHRoZSBzYW1lIHZhbHVlKS4KICAgICBjb25zdCB7IGNhbnZh
cywgY2FudmFzQ29udGV4dCB9ID0gdC5pbml0MkRDYW52YXNDb250ZW50KHsKICAgICAgIGNhbnZh
c1R5cGUsCiAgICAgICB3aWR0aCwKICAgICAgIGhlaWdodCwKLSAgICAgIHBhaW50T3BhcXVlUmVj
dHM6IGRzdENvbG9yRm9ybWF0ID09PSAncmdiMTBhMnVub3JtJywKICAgICB9KTsKIAogICAgIGNv
bnN0IGRzdCA9IHQuZGV2aWNlLmNyZWF0ZVRleHR1cmUoewpAQCAtNDA2LDIzICszNzEsMjIgQEAg
Zy50ZXN0KCdjb3B5X2NvbnRlbnRzX2Zyb21fMmRfY29udGV4dF9jYW52YXMnKQogICAgIH0pOwog
CiAgICAgLy8gQ29uc3RydWN0IGV4cGVjdGVkIHZhbHVlIGZvciBkaWZmZXJlbnQgZHN0IGNvbG9y
IGZvcm1hdAotICAgIGNvbnN0IGRzdEJ5dGVzUGVyUGl4ZWwgPSBrVGV4dHVyZUZvcm1hdEluZm9b
ZHN0Q29sb3JGb3JtYXRdLmJ5dGVzUGVyQmxvY2s7Ci0gICAgY29uc3QgZm9ybWF0ID0KLSAgICAg
IGtUZXh0dXJlRm9ybWF0SW5mb1tkc3RDb2xvckZvcm1hdF0uYmFzZUZvcm1hdCAhPT0gdW5kZWZp
bmVkCi0gICAgICAgID8ga1RleHR1cmVGb3JtYXRJbmZvW2RzdENvbG9yRm9ybWF0XS5iYXNlRm9y
bWF0Ci0gICAgICAgIDogZHN0Q29sb3JGb3JtYXQ7CisgICAgY29uc3QgaW5mbyA9IGtUZXh0dXJl
Rm9ybWF0SW5mb1tkc3RDb2xvckZvcm1hdF07CisgICAgY29uc3QgZXhwRm9ybWF0ID0gaW5mby5i
YXNlRm9ybWF0ID8/IGRzdENvbG9yRm9ybWF0OwogCiAgICAgLy8gRm9yIDJkIGNhbnZhcywgZ2V0
IGV4cGVjdGVkIHBpeGVscyB3aXRoIGdldEltYWdlRGF0YSgpLCB3aGljaCByZXR1cm5zIHVucHJl
bXVsdGlwbGllZAogICAgIC8vIHZhbHVlcy4KICAgICBjb25zdCBzb3VyY2VQaXhlbHMgPSB0Lmdl
dFNvdXJjZUNhbnZhczJEQ29udGVudChjYW52YXNDb250ZXh0LCB3aWR0aCwgaGVpZ2h0KTsKLSAg
ICBjb25zdCBleHBlY3RlZFBpeGVscyA9IHQuZ2V0RXhwZWN0ZWRQaXhlbHMoCisgICAgY29uc3Qg
ZXhwVGV4ZWxWaWV3ID0gdC5nZXRFeHBlY3RlZFBpeGVscygKICAgICAgIHNvdXJjZVBpeGVscywK
ICAgICAgIHdpZHRoLAogICAgICAgaGVpZ2h0LAotICAgICAgZm9ybWF0LAotICAgICAgZmFsc2Us
Ci0gICAgICBkc3RQcmVtdWx0aXBsaWVkLAotICAgICAgc3JjRG9GbGlwWUR1cmluZ0NvcHkKKyAg
ICAgIGV4cEZvcm1hdCwKKyAgICAgIHNyY0RvRmxpcFlEdXJpbmdDb3B5LAorICAgICAgeworICAg
ICAgICBzcmNQcmVtdWx0aXBsaWVkOiBmYWxzZSwKKyAgICAgICAgZHN0UHJlbXVsdGlwbGllZCwK
KyAgICAgIH0KICAgICApOwogCiAgICAgdC5kb1Rlc3RBbmRDaGVja1Jlc3VsdCgKQEAgLTQzNCwx
MCArMzk4LDExIEBAIGcudGVzdCgnY29weV9jb250ZW50c19mcm9tXzJkX2NvbnRleHRfY2FudmFz
JykKICAgICAgICAgcHJlbXVsdGlwbGllZEFscGhhOiBkc3RQcmVtdWx0aXBsaWVkLAogICAgICAg
fSwKIAotICAgICAgeyB3aWR0aDogY2FudmFzLndpZHRoLCBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQs
IGRlcHRoT3JBcnJheUxheWVyczogMSB9LAotICAgICAgZHN0Qnl0ZXNQZXJQaXhlbCwKLSAgICAg
IGV4cGVjdGVkUGl4ZWxzLAotICAgICAgZHN0Q29sb3JGb3JtYXQKKyAgICAgIGV4cFRleGVsVmll
dywKKyAgICAgIHsgd2lkdGgsIGhlaWdodCwgZGVwdGhPckFycmF5TGF5ZXJzOiAxIH0sCisgICAg
ICAvLyAxLjAgYW5kIDAuNiBhcmUgcmVwcmVzZW50YWJsZSBwcmVjaXNlbHkgYnkgYWxsIGZvcm1h
dHMgZXhjZXB0IHJnYjEwYTJ1bm9ybSwgYnV0CisgICAgICAvLyBhbGxvdyBkaWZmcyBvZiAxVUxQ
IHNpbmNlIHRoYXQncyB0aGUgZ2VuZXJhbGx5LWFwcHJvcHJpYXRlIHRocmVzaG9sZC4KKyAgICAg
IHsgbWF4RGlmZlVMUHNGb3JOb3JtRm9ybWF0OiAxLCBtYXhEaWZmVUxQc0ZvckZsb2F0Rm9ybWF0
OiAxIH0KICAgICApOwogICB9KTsKIApAQCAtNDcwLDE0ICs0MzUsMTMgQEAgZy50ZXN0KCdjb3B5
X2NvbnRlbnRzX2Zyb21fZ2xfY29udGV4dF9jYW52YXMnKQogICAtIFZhbGlkIGRlc3QgYWxwaGFN
b2RlCiAgIC0gVmFsaWQgJ2ZsaXBZJyBjb25maWcgaW4gJ0dQVUltYWdlQ29weUV4dGVybmFsSW1h
Z2UnKG5hbWVkICdzcmNEb0ZsaXBZRHVyaW5nQ29weScgaW4gY2FzZXMpCiAgIC0gVE9ETzogY29s
b3Igc3BhY2UgdGVzdHMgbmVlZCB0byBiZSBhZGRlZAotICAtIFRPRE86IEFkZCBlcnJvciB0b2xl
cmFuY2UgZm9yIHJnYjEwYTJ1bm9ybSBkc3QgdGV4dHVyZSBmb3JtYXQKIAogICBBbmQgdGhlIGV4
cGVjdGVkIHJlc3VsdHMgYXJlIGFsbCBwYXNzZWQuCiAgIGAKICAgKQogICAucGFyYW1zKHUgPT4K
ICAgICB1Ci0gICAgICAuY29tYmluZSgnY2FudmFzVHlwZScsIGFsbENhbnZhc1R5cGVzKQorICAg
ICAgLmNvbWJpbmUoJ2NhbnZhc1R5cGUnLCBrQWxsQ2FudmFzVHlwZXMpCiAgICAgICAuY29tYmlu
ZSgnY29udGV4dE5hbWUnLCBbJ3dlYmdsJywgJ3dlYmdsMiddKQogICAgICAgLmNvbWJpbmUoJ2Rz
dENvbG9yRm9ybWF0Jywga1ZhbGlkVGV4dHVyZUZvcm1hdHNGb3JDb3B5RTJUKQogICAgICAgLmNv
bWJpbmUoJ3NyY1ByZW11bHRpcGxpZWQnLCBbdHJ1ZSwgZmFsc2VdKQpAQCAtNDk5LDUxICs0NjMs
MzUgQEAgZy50ZXN0KCdjb3B5X2NvbnRlbnRzX2Zyb21fZ2xfY29udGV4dF9jYW52YXMnKQogICAg
ICAgc3JjRG9GbGlwWUR1cmluZ0NvcHksCiAgICAgfSA9IHQucGFyYW1zOwogCi0gICAgLy8gV2hl
biBkc3QgdGV4dHVyZSBmb3JtYXQgaXMgcmdiMTBhMnVub3JtLCB0aGUgZ2VuZXJhdGVkIGV4cGVj
dGVkIHZhbHVlIG9mIHRoZSByZXN1bHQKLSAgICAvLyBtYXkgaGF2ZSB0aW55IGVycm9ycyBjb21w
YXJlZCB0byB0aGUgYWN0dWFsIHJlc3VsdCB3aGVuIHRoZSBjaGFubmVsIHZhbHVlIGlzCi0gICAg
Ly8gbm90IDEuMCBvciAwLjAuCi0gICAgLy8gRm9yIGV4YW1wbGUsIHdlIGluaXQgdGhlIHBpeGVs
IHdpdGggciBjaGFubmVsIHRvIDAuNi4gQW5kIHRoZSBkZW5vcm1hbGl6ZWQgdmFsdWUgZm9yCi0g
ICAgLy8gMTAtYml0IGNoYW5uZWwgaXMgNjEzLjgsIHdoaWNoIG5lZWRzIHRvIGNhbGwgInJvdW5k
IiBvciBvdGhlciBmdW5jdGlvbiB0byBnZXQgYW4gaW50ZWdlci4KLSAgICAvLyBJdCBpcyBwb3Nz
aWJsZSB0aGF0IGdwdSBhZG9wdCBkaWZmZXJlbnQgInJvdW5kIiBhcyBvdXIgY3B1IGltcGxlbWVu
dGF0aW9uKHdlIHVzZSBNYXRoLnJvdW5kKCkpCi0gICAgLy8gYW5kIGl0IHdpbGwgZ2VuZXJhdGUg
dGlueSBlcnJvcnMuCi0gICAgLy8gU28gdGhlIGNhc2VzIHdpdGggcmdiMTBhMnVub3JtIGRzdCB0
ZXh0dXJlIGZvcm1hdCBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYnkgYnkgcGFpbnRpbmcgb3BhcXVl
IHJlY3RzCi0gICAgLy8gdG8gZW5zdXJlIHRoZXkgd2lsbCBoYXZlIHN0YWJsZSByZXN1bHQgYWZ0
ZXIgYWxwaGFPcHMoc2hvdWxkIGtlZXAgdGhlIHNhbWUgdmFsdWUpLgogICAgIGNvbnN0IHsgY2Fu
dmFzLCBjYW52YXNDb250ZXh0IH0gPSB0LmluaXRHTENhbnZhc0NvbnRlbnQoewogICAgICAgY2Fu
dmFzVHlwZSwKICAgICAgIGNvbnRleHROYW1lLAogICAgICAgd2lkdGgsCiAgICAgICBoZWlnaHQs
CiAgICAgICBwcmVtdWx0aXBsaWVkOiBzcmNQcmVtdWx0aXBsaWVkLAotICAgICAgcGFpbnRPcGFx
dWVSZWN0czogZHN0Q29sb3JGb3JtYXQgPT09ICdyZ2IxMGEydW5vcm0nLAogICAgIH0pOwogCiAg
ICAgY29uc3QgZHN0ID0gdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7Ci0gICAgICBzaXplOiB7Ci0g
ICAgICAgIHdpZHRoLAotICAgICAgICBoZWlnaHQsCi0gICAgICAgIGRlcHRoT3JBcnJheUxheWVy
czogMSwKLSAgICAgIH0sCi0KKyAgICAgIHNpemU6IHsgd2lkdGgsIGhlaWdodCB9LAogICAgICAg
Zm9ybWF0OiBkc3RDb2xvckZvcm1hdCwKICAgICAgIHVzYWdlOgogICAgICAgICBHUFVUZXh0dXJl
VXNhZ2UuQ09QWV9EU1QgfCBHUFVUZXh0dXJlVXNhZ2UuQ09QWV9TUkMgfCBHUFVUZXh0dXJlVXNh
Z2UuUkVOREVSX0FUVEFDSE1FTlQsCiAgICAgfSk7CiAKICAgICAvLyBDb25zdHJ1Y3QgZXhwZWN0
ZWQgdmFsdWUgZm9yIGRpZmZlcmVudCBkc3QgY29sb3IgZm9ybWF0Ci0gICAgY29uc3QgZHN0Qnl0
ZXNQZXJQaXhlbCA9IGtUZXh0dXJlRm9ybWF0SW5mb1tkc3RDb2xvckZvcm1hdF0uYnl0ZXNQZXJC
bG9jazsKLSAgICBjb25zdCBmb3JtYXQgPQotICAgICAga1RleHR1cmVGb3JtYXRJbmZvW2RzdENv
bG9yRm9ybWF0XS5iYXNlRm9ybWF0ICE9PSB1bmRlZmluZWQKLSAgICAgICAgPyBrVGV4dHVyZUZv
cm1hdEluZm9bZHN0Q29sb3JGb3JtYXRdLmJhc2VGb3JtYXQKLSAgICAgICAgOiBkc3RDb2xvckZv
cm1hdDsKKyAgICBjb25zdCBpbmZvID0ga1RleHR1cmVGb3JtYXRJbmZvW2RzdENvbG9yRm9ybWF0
XTsKKyAgICBjb25zdCBleHBGb3JtYXQgPSBpbmZvLmJhc2VGb3JtYXQgPz8gZHN0Q29sb3JGb3Jt
YXQ7CiAgICAgY29uc3Qgc291cmNlUGl4ZWxzID0gdC5nZXRTb3VyY2VDYW52YXNHTENvbnRlbnQo
Y2FudmFzQ29udGV4dCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY29uc3QgZXhwZWN0ZWRQaXhlbHMg
PSB0LmdldEV4cGVjdGVkUGl4ZWxzKAorICAgIGNvbnN0IGV4cFRleGVsVmlldyA9IHQuZ2V0RXhw
ZWN0ZWRQaXhlbHMoCiAgICAgICBzb3VyY2VQaXhlbHMsCiAgICAgICB3aWR0aCwKICAgICAgIGhl
aWdodCwKLSAgICAgIGZvcm1hdCwKLSAgICAgIHNyY1ByZW11bHRpcGxpZWQsCi0gICAgICBkc3RQ
cmVtdWx0aXBsaWVkLAotICAgICAgc3JjRG9GbGlwWUR1cmluZ0NvcHkKKyAgICAgIGV4cEZvcm1h
dCwKKyAgICAgIHNyY0RvRmxpcFlEdXJpbmdDb3B5LAorICAgICAgeworICAgICAgICBzcmNQcmVt
dWx0aXBsaWVkLAorICAgICAgICBkc3RQcmVtdWx0aXBsaWVkLAorICAgICAgfQogICAgICk7CiAK
ICAgICB0LmRvVGVzdEFuZENoZWNrUmVzdWx0KApAQCAtNTU1LDEwICs1MDMsMTEgQEAgZy50ZXN0
KCdjb3B5X2NvbnRlbnRzX2Zyb21fZ2xfY29udGV4dF9jYW52YXMnKQogICAgICAgICBwcmVtdWx0
aXBsaWVkQWxwaGE6IGRzdFByZW11bHRpcGxpZWQsCiAgICAgICB9LAogCi0gICAgICB7IHdpZHRo
OiBjYW52YXMud2lkdGgsIGhlaWdodDogY2FudmFzLmhlaWdodCwgZGVwdGhPckFycmF5TGF5ZXJz
OiAxIH0sCi0gICAgICBkc3RCeXRlc1BlclBpeGVsLAotICAgICAgZXhwZWN0ZWRQaXhlbHMsCi0g
ICAgICBkc3RDb2xvckZvcm1hdAorICAgICAgZXhwVGV4ZWxWaWV3LAorICAgICAgeyB3aWR0aCwg
aGVpZ2h0LCBkZXB0aE9yQXJyYXlMYXllcnM6IDEgfSwKKyAgICAgIC8vIDEuMCBhbmQgMC42IGFy
ZSByZXByZXNlbnRhYmxlIHByZWNpc2VseSBieSBhbGwgZm9ybWF0cyBleGNlcHQgcmdiMTBhMnVu
b3JtLCBidXQKKyAgICAgIC8vIGFsbG93IGRpZmZzIG9mIDFVTFAgc2luY2UgdGhhdCdzIHRoZSBn
ZW5lcmFsbHktYXBwcm9wcmlhdGUgdGhyZXNob2xkLgorICAgICAgeyBtYXhEaWZmVUxQc0Zvck5v
cm1Gb3JtYXQ6IDEsIG1heERpZmZVTFBzRm9yRmxvYXRGb3JtYXQ6IDEgfQogICAgICk7CiAgIH0p
OwogCkBAIC01OTMsMTQgKzU0MiwxMyBAQCBnLnRlc3QoJ2NvcHlfY29udGVudHNfZnJvbV9ncHVf
Y29udGV4dF9jYW52YXMnKQogICAtIFZhbGlkIGRlc3QgYWxwaGFNb2RlCiAgIC0gVmFsaWQgJ2Zs
aXBZJyBjb25maWcgaW4gJ0dQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UnKG5hbWVkICdzcmNEb0Zs
aXBZRHVyaW5nQ29weScgaW4gY2FzZXMpCiAgIC0gVE9ETzogY29sb3Igc3BhY2UgdGVzdHMgbmVl
ZCB0byBiZSBhZGRlZAotICAtIFRPRE86IEFkZCBlcnJvciB0b2xlcmFuY2UgZm9yIHJnYjEwYTJ1
bm9ybSBkc3QgdGV4dHVyZSBmb3JtYXQKIAogICBBbmQgdGhlIGV4cGVjdGVkIHJlc3VsdHMgYXJl
IGFsbCBwYXNzZWQuCiAgIGAKICAgKQogICAucGFyYW1zKHUgPT4KICAgICB1Ci0gICAgICAuY29t
YmluZSgnY2FudmFzVHlwZScsIGFsbENhbnZhc1R5cGVzKQorICAgICAgLmNvbWJpbmUoJ2NhbnZh
c1R5cGUnLCBrQWxsQ2FudmFzVHlwZXMpCiAgICAgICAuY29tYmluZSgnc3JjQW5kRHN0SW5TYW1l
R1BVRGV2aWNlJywgW3RydWUsIGZhbHNlXSkKICAgICAgIC5jb21iaW5lKCdkc3RDb2xvckZvcm1h
dCcsIGtWYWxpZFRleHR1cmVGb3JtYXRzRm9yQ29weUUyVCkKICAgICAgIC5jb21iaW5lKCdzcmNQ
cmVtdWx0aXBsaWVkJywgW3RydWVdKQpAQCAtNjMxLDIyICs1NzksMTIgQEAgZy50ZXN0KCdjb3B5
X2NvbnRlbnRzX2Zyb21fZ3B1X2NvbnRleHRfY2FudmFzJykKICAgICAgIGRldmljZSA9IHQuZGV2
aWNlOwogICAgIH0KIAotICAgIC8vIFdoZW4gZHN0IHRleHR1cmUgZm9ybWF0IGlzIHJnYjEwYTJ1
bm9ybSwgdGhlIGdlbmVyYXRlZCBleHBlY3RlZCB2YWx1ZSBvZiB0aGUgcmVzdWx0Ci0gICAgLy8g
bWF5IGhhdmUgdGlueSBlcnJvcnMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCByZXN1bHQgd2hlbiB0
aGUgY2hhbm5lbCB2YWx1ZSBpcwotICAgIC8vIG5vdCAxLjAgb3IgMC4wLgotICAgIC8vIEZvciBl
eGFtcGxlLCB3ZSBpbml0IHRoZSBwaXhlbCB3aXRoIHIgY2hhbm5lbCB0byAwLjYuIEFuZCB0aGUg
ZGVub3JtYWxpemVkIHZhbHVlIGZvcgotICAgIC8vIDEwLWJpdCBjaGFubmVsIGlzIDYxMy44LCB3
aGljaCBuZWVkcyB0byBjYWxsICJyb3VuZCIgb3Igb3RoZXIgZnVuY3Rpb24gdG8gZ2V0IGFuIGlu
dGVnZXIuCi0gICAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCBncHUgYWRvcHQgZGlmZmVyZW50ICJy
b3VuZCIgYXMgb3VyIGNwdSBpbXBsZW1lbnRhdGlvbih3ZSB1c2UgTWF0aC5yb3VuZCgpKQotICAg
IC8vIGFuZCBpdCB3aWxsIGdlbmVyYXRlIHRpbnkgZXJyb3JzLgotICAgIC8vIFNvIHRoZSBjYXNl
cyB3aXRoIHJnYjEwYTJ1bm9ybSBkc3QgdGV4dHVyZSBmb3JtYXQgYXJlIGhhbmRsZWQgc3BlY2lh
bGx5IGJ5IGJ5IHBhaW50aW5nIG9wYXF1ZSByZWN0cwotICAgIC8vIHRvIGVuc3VyZSB0aGV5IHdp
bGwgaGF2ZSBzdGFibGUgcmVzdWx0IGFmdGVyIGFscGhhT3BzKHNob3VsZCBrZWVwIHRoZSBzYW1l
IHZhbHVlKS4KICAgICBjb25zdCB7IGNhbnZhcyB9ID0gdC5pbml0R1BVQ2FudmFzQ29udGVudCh7
CiAgICAgICBkZXZpY2UsCiAgICAgICBjYW52YXNUeXBlLAogICAgICAgd2lkdGgsCiAgICAgICBo
ZWlnaHQsCiAgICAgICBwcmVtdWx0aXBsaWVkOiBzcmNQcmVtdWx0aXBsaWVkLAotICAgICAgcGFp
bnRPcGFxdWVSZWN0czogZHN0Q29sb3JGb3JtYXQgPT09ICdyZ2IxMGEydW5vcm0nLAogICAgIH0p
OwogCiAgICAgY29uc3QgZHN0ID0gdC5kZXZpY2UuY3JlYXRlVGV4dHVyZSh7CkBAIC02NjIsMjMg
KzYwMCwxOSBAQCBnLnRlc3QoJ2NvcHlfY29udGVudHNfZnJvbV9ncHVfY29udGV4dF9jYW52YXMn
KQogICAgIH0pOwogCiAgICAgLy8gQ29uc3RydWN0IGV4cGVjdGVkIHZhbHVlIGZvciBkaWZmZXJl
bnQgZHN0IGNvbG9yIGZvcm1hdAotICAgIGNvbnN0IGRzdEJ5dGVzUGVyUGl4ZWwgPSBrVGV4dHVy
ZUZvcm1hdEluZm9bZHN0Q29sb3JGb3JtYXRdLmJ5dGVzUGVyQmxvY2s7Ci0gICAgY29uc3QgZm9y
bWF0ID0ga1RleHR1cmVGb3JtYXRJbmZvW2RzdENvbG9yRm9ybWF0XS5iYXNlRm9ybWF0ID8/IGRz
dENvbG9yRm9ybWF0OwotICAgIGNvbnN0IHNvdXJjZVBpeGVscyA9IHQuY2FsY3VsYXRlU291cmNl
Q29udGVudE9uQ1BVKAotICAgICAgd2lkdGgsCi0gICAgICBoZWlnaHQsCi0gICAgICBzcmNQcmVt
dWx0aXBsaWVkLAotICAgICAgZHN0Q29sb3JGb3JtYXQgPT09ICdyZ2IxMGEydW5vcm0nCi0gICAg
KTsKLQotICAgIGNvbnN0IGV4cGVjdGVkUGl4ZWxzID0gdC5nZXRFeHBlY3RlZFBpeGVscygKKyAg
ICBjb25zdCBpbmZvID0ga1RleHR1cmVGb3JtYXRJbmZvW2RzdENvbG9yRm9ybWF0XTsKKyAgICBj
b25zdCBleHBGb3JtYXQgPSBpbmZvLmJhc2VGb3JtYXQgPz8gZHN0Q29sb3JGb3JtYXQ7CisgICAg
Y29uc3Qgc291cmNlUGl4ZWxzID0gdC5jYWxjdWxhdGVTb3VyY2VDb250ZW50T25DUFUod2lkdGgs
IGhlaWdodCwgc3JjUHJlbXVsdGlwbGllZCk7CisgICAgY29uc3QgZXhwVGV4ZWxWaWV3ID0gdC5n
ZXRFeHBlY3RlZFBpeGVscygKICAgICAgIHNvdXJjZVBpeGVscywKICAgICAgIHdpZHRoLAogICAg
ICAgaGVpZ2h0LAotICAgICAgZm9ybWF0LAotICAgICAgc3JjUHJlbXVsdGlwbGllZCwKLSAgICAg
IGRzdFByZW11bHRpcGxpZWQsCi0gICAgICBzcmNEb0ZsaXBZRHVyaW5nQ29weQorICAgICAgZXhw
Rm9ybWF0LAorICAgICAgc3JjRG9GbGlwWUR1cmluZ0NvcHksCisgICAgICB7CisgICAgICAgIHNy
Y1ByZW11bHRpcGxpZWQsCisgICAgICAgIGRzdFByZW11bHRpcGxpZWQsCisgICAgICB9CiAgICAg
KTsKIAogICAgIHQuZG9UZXN0QW5kQ2hlY2tSZXN1bHQoCkBAIC02OTAsMTAgKzYyNCwxMSBAQCBn
LnRlc3QoJ2NvcHlfY29udGVudHNfZnJvbV9ncHVfY29udGV4dF9jYW52YXMnKQogICAgICAgICBw
cmVtdWx0aXBsaWVkQWxwaGE6IGRzdFByZW11bHRpcGxpZWQsCiAgICAgICB9LAogCisgICAgICBl
eHBUZXhlbFZpZXcsCiAgICAgICB7IHdpZHRoOiBjYW52YXMud2lkdGgsIGhlaWdodDogY2FudmFz
LmhlaWdodCwgZGVwdGhPckFycmF5TGF5ZXJzOiAxIH0sCi0gICAgICBkc3RCeXRlc1BlclBpeGVs
LAotICAgICAgZXhwZWN0ZWRQaXhlbHMsCi0gICAgICBkc3RDb2xvckZvcm1hdAorICAgICAgLy8g
MS4wIGFuZCAwLjYgYXJlIHJlcHJlc2VudGFibGUgcHJlY2lzZWx5IGJ5IGFsbCBmb3JtYXRzIGV4
Y2VwdCByZ2IxMGEydW5vcm0sIGJ1dAorICAgICAgLy8gYWxsb3cgZGlmZnMgb2YgMVVMUCBzaW5j
ZSB0aGF0J3MgdGhlIGdlbmVyYWxseS1hcHByb3ByaWF0ZSB0aHJlc2hvbGQuCisgICAgICB7IG1h
eERpZmZVTFBzRm9yTm9ybUZvcm1hdDogMSwgbWF4RGlmZlVMUHNGb3JGbG9hdEZvcm1hdDogMSB9
CiAgICAgKTsKICAgfSk7CiAKQEAgLTcwMywzMSArNjM4LDMzIEBAIGcudGVzdCgnY29sb3Jfc3Bh
Y2VfY29udmVyc2lvbicpCiAgICAgVGVzdCBIVE1MQ2FudmFzRWxlbWVudCB3aXRoIDJkIGNvbnRl
eHQgY2FuIGNyZWF0ZWQgd2l0aCAnY29sb3JTcGFjZScgYXR0cmlidXRlLgogICAgIFVzaW5nIENv
cHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlIHRvIGNvcHkgZnJvbSBzdWNoIHR5cGUgb2YgY2FudmFz
IG5lZWRzCiAgICAgdG8gZG8gY29sb3Igc3BhY2UgY29udmVydGluZyBjb3JyZWN0bHkuCi0gIAor
CiAgICAgSXQgY3JlYXRlcyBIVE1MQ2FudmFzRWxlbWVudC9PZmZzY3JlZW5DYW52YXMgd2l0aCAn
MmQnIGFuZCAnY29sb3JTcGFjZScgYXR0cmlidXRlcy4KICAgICBVc2UgZmlsbFJlY3QoMmQgY29u
dGV4dCkgdG8gcmVuZGVyIHJlZCByZWN0IGZvciB0b3AtbGVmdCwKICAgICBncmVlbiByZWN0IGZv
ciB0b3AtcmlnaHQsIGJsdWUgcmVjdCBmb3IgYm90dG9tLWxlZnQgYW5kIHdoaXRlIGZvciBib3R0
b20tcmlnaHQuCi0gIAorCiAgICAgVGhlbiBjYWxsIGNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJl
KCkgdG8gZG8gYSBmdWxsIGNvcHkgdG8gdGhlIDAgbWlwTGV2ZWwKICAgICBvZiBkc3QgdGV4dHVy
ZSwgYW5kIHJlYWQgdGhlIGNvbnRlbnRzIG91dCB0byBjb21wYXJlIHdpdGggdGhlIGNhbnZhcyBj
b250ZW50cy4KLSAgCisKICAgICBQcm92aWRlIHByZW11bHRpcGxpZWQgaW5wdXQgaWYgJ3ByZW11
bHRpcGxpZWRBbHBoYScgaW4gJ0dQVUltYWdlQ29weVRleHR1cmVUYWdnZWQnCiAgICAgaXMgc2V0
IHRvICd0cnVlJyBhbmQgdW5wcmVtdWx0aXBsaWVkIGlucHV0IGlmIGl0IGlzIHNldCB0byAnZmFs
c2UnLgotICAKKwogICAgIElmICdmbGlwWScgaW4gJ0dQVUltYWdlQ29weUV4dGVybmFsSW1hZ2Un
IGlzIHNldCB0byAndHJ1ZScsIGNvcHkgd2lsbCBlbnN1cmUgdGhlIHJlc3VsdAogICAgIGlzIGZs
aXBwZWQuCiAKICAgICBJZiBjb2xvciBzcGFjZSBmcm9tIHNvdXJjZSBpbnB1dCBhbmQgdXNlciBk
ZWZpbmVkIGRzdFRleHR1cmUgY29sb3Igc3BhY2UgYXJlIGRpZmZlcmVudCwgdGhlCiAgICAgcmVz
dWx0IG11c3QgY29udmVydCB0aGUgY29udGVudCB0byB1c2VyIGRlZmluZWQgY29sb3Igc3BhY2UK
LSAgCisKICAgICBUaGUgdGVzdHMgY292ZXJzOgogICAgIC0gVmFsaWQgZHN0Q29sb3JGb3JtYXQg
b2YgY29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoKQogICAgIC0gVmFsaWQgZGVzdCBhbHBoYU1v
ZGUKICAgICAtIFZhbGlkICdmbGlwWScgY29uZmlnIGluICdHUFVJbWFnZUNvcHlFeHRlcm5hbElt
YWdlJyAobmFtZWQgJ3NyY0RvRmxpcFlEdXJpbmdDb3B5JyBpbiBjYXNlcykKICAgICAtIFZhbGlk
ICdjb2xvclNwYWNlJyBjb25maWcgaW4gJ2RzdENvbG9yU3BhY2UnCi0gICAgLSBUT0RPOiBBZGQg
ZXJyb3IgdG9sZXJhbmNlIGZvciByZ2IxMGEydW5vcm0gZHN0IHRleHR1cmUgZm9ybWF0Ci0gIAor
CiAgICAgQW5kIHRoZSBleHBlY3RlZCByZXN1bHRzIGFyZSBhbGwgcGFzc2VkLgorCisgICAgVE9E
TzogRW5oYW5jZSB0ZXN0IGRhdGEgd2l0aCBjb2xvcnMgdGhhdCBhcmVuJ3QgYWx3YXlzIG9wYXF1
ZSBhbmQgZnVsbHkgc2F0dXJhdGVkLgorICAgIFRPRE86IENvbnNpZGVyIHJlZmFjdG9yaW5nIHNy
YyBkYXRhIHNldHVwIHdpdGggVGV4ZWxWaWV3LndyaXRlVGV4dHVyZURhdGEuCiAgIGAKICAgKQog
ICAucGFyYW1zKHUgPT4KQEAgLTc1NCwxNyArNjkxLDExIEBAIGcudGVzdCgnY29sb3Jfc3BhY2Vf
Y29udmVyc2lvbicpCiAgICAgY29uc3QgeyBjYW52YXMsIGNhbnZhc0NvbnRleHQgfSA9IHQuaW5p
dDJEQ2FudmFzQ29udGVudFdpdGhDb2xvclNwYWNlKHsKICAgICAgIHdpZHRoLAogICAgICAgaGVp
Z2h0LAotICAgICAgcGFpbnRPcGFxdWVSZWN0czogdHJ1ZSwKICAgICAgIGNvbG9yU3BhY2U6IHNy
Y0NvbG9yU3BhY2UsCiAgICAgfSk7CiAKICAgICBjb25zdCBkc3QgPSB0LmRldmljZS5jcmVhdGVU
ZXh0dXJlKHsKLSAgICAgIHNpemU6IHsKLSAgICAgICAgd2lkdGgsCi0gICAgICAgIGhlaWdodCwK
LSAgICAgICAgZGVwdGhPckFycmF5TGF5ZXJzOiAxLAotICAgICAgfSwKLQorICAgICAgc2l6ZTog
eyB3aWR0aCwgaGVpZ2h0IH0sCiAgICAgICBmb3JtYXQ6IGRzdENvbG9yRm9ybWF0LAogICAgICAg
dXNhZ2U6CiAgICAgICAgIEdQVVRleHR1cmVVc2FnZS5DT1BZX0RTVCB8IEdQVVRleHR1cmVVc2Fn
ZS5DT1BZX1NSQyB8IEdQVVRleHR1cmVVc2FnZS5SRU5ERVJfQVRUQUNITUVOVCwKQEAgLTc3Miwy
MCArNzAzLDMzIEBAIGcudGVzdCgnY29sb3Jfc3BhY2VfY29udmVyc2lvbicpCiAKICAgICBjb25z
dCBzb3VyY2VQaXhlbHMgPSB0LmdldFNvdXJjZUNhbnZhczJEQ29udGVudChjYW52YXNDb250ZXh0
LCB3aWR0aCwgaGVpZ2h0KTsKIAotICAgIGNvbnN0IGRzdEJ5dGVzUGVyUGl4ZWwgPSBrVGV4dHVy
ZUZvcm1hdEluZm9bZHN0Q29sb3JGb3JtYXRdLmJ5dGVzUGVyQmxvY2s7Ci0KLSAgICBjb25zdCBl
eHBlY3RlZFBpeGVscyA9IHQuZ2V0RXhwZWN0ZWRQaXhlbHMoCisgICAgY29uc3QgZXhwVGV4ZWxW
aWV3ID0gdC5nZXRFeHBlY3RlZFBpeGVscygKICAgICAgIHNvdXJjZVBpeGVscywKICAgICAgIHdp
ZHRoLAogICAgICAgaGVpZ2h0LAotICAgICAgZHN0Q29sb3JGb3JtYXQsCi0gICAgICBmYWxzZSwK
LSAgICAgIGRzdFByZW11bHRpcGxpZWQsCisgICAgICAvLyBjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4
dHVyZSBkb2VzIG5vdCBwZXJmb3JtIGdhbW1hLWVuY29kaW5nIGludG8gYC1zcmdiYCBmb3JtYXRz
LgorICAgICAga1RleHR1cmVGb3JtYXRJbmZvW2RzdENvbG9yRm9ybWF0XS5iYXNlRm9ybWF0ID8/
IGRzdENvbG9yRm9ybWF0LAogICAgICAgc3JjRG9GbGlwWUR1cmluZ0NvcHksCi0gICAgICBzcmND
b2xvclNwYWNlLAotICAgICAgZHN0Q29sb3JTcGFjZQorICAgICAgeworICAgICAgICBzcmNQcmVt
dWx0aXBsaWVkOiBmYWxzZSwKKyAgICAgICAgZHN0UHJlbXVsdGlwbGllZCwKKyAgICAgICAgc3Jj
Q29sb3JTcGFjZSwKKyAgICAgICAgZHN0Q29sb3JTcGFjZSwKKyAgICAgIH0KICAgICApOwogCisg
ICAgY29uc3QgdGV4ZWxDb21wYXJlT3B0aW9ucyA9IHsKKyAgICAgIG1heEZyYWN0aW9uYWxEaWZm
OiAwLAorICAgICAgbWF4RGlmZlVMUHNGb3JOb3JtRm9ybWF0OiAxLAorICAgIH07CisKKyAgICBp
ZiAoc3JjQ29sb3JTcGFjZSAhPT0gZHN0Q29sb3JTcGFjZSkgeworICAgICAgLy8gQ29sb3Igc3Bh
Y2UgY29udmVyc2lvbiBzZWVtcyBwcm9uZSB0byBlcnJvcnMgdXAgdG8gYWJvdXQgMC4wMDAzIG9u
IGYzMiwgMC4wMDA3IG9uIGYxNi4KKyAgICAgIHRleGVsQ29tcGFyZU9wdGlvbnMubWF4RnJhY3Rp
b25hbERpZmYgPSAwLjAwMTsKKyAgICB9IGVsc2UgeworICAgICAgdGV4ZWxDb21wYXJlT3B0aW9u
cy5tYXhEaWZmVUxQc0ZvckZsb2F0Rm9ybWF0ID0gMTsKKyAgICB9CisKICAgICB0LmRvVGVzdEFu
ZENoZWNrUmVzdWx0KAogICAgICAgeyBzb3VyY2U6IGNhbnZhcywgb3JpZ2luOiB7IHg6IDAsIHk6
IDAgfSwgZmxpcFk6IHNyY0RvRmxpcFlEdXJpbmdDb3B5IH0sCiAgICAgICB7CkBAIC03OTUsOSAr
NzM5LDggQEAgZy50ZXN0KCdjb2xvcl9zcGFjZV9jb252ZXJzaW9uJykKICAgICAgICAgcHJlbXVs
dGlwbGllZEFscGhhOiBkc3RQcmVtdWx0aXBsaWVkLAogICAgICAgfSwKIAotICAgICAgeyB3aWR0
aDogY2FudmFzLndpZHRoLCBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsIGRlcHRoT3JBcnJheUxheWVy
czogMSB9LAotICAgICAgZHN0Qnl0ZXNQZXJQaXhlbCwKLSAgICAgIGV4cGVjdGVkUGl4ZWxzLAot
ICAgICAgZHN0Q29sb3JGb3JtYXQKKyAgICAgIGV4cFRleGVsVmlldywKKyAgICAgIHsgd2lkdGgs
IGhlaWdodCwgZGVwdGhPckFycmF5TGF5ZXJzOiAxIH0sCisgICAgICB0ZXhlbENvbXBhcmVPcHRp
b25zCiAgICAgKTsKICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
ZGV2aWNlLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLWRl
dmljZS13azEvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkYTgyODM2NWY2M2UuLjA0YjgxN2YzMjE5
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLWRldmljZS13azEvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MtZGV2aWNlLXdrMS9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xOSw2ICsxOSw3IEBAIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS93
ZWJfcGxhdGZvcm0vY2FudmFzL2dldEN1cnJlbnRUZXh0dXJlLmh0bWwgWyBTa2lwIF0KIGh0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS93ZWJfcGxhdGZvcm0vY2FudmFzL2NvbnRleHRfY3JlYXRpb24u
aHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3dlYl9wbGF0Zm9ybS9jYW52
YXMvY29uZmlndXJlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS93ZWJf
cGxhdGZvcm0vd29ya2VyL3dvcmtlci5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvdXRpbC90ZXh0dXJlL3RleHR1cmVfb2suaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L3V0aWwvdGV4dHVyZS90ZXhlbF9kYXRhLmh0bWwgWyBTa2lwIF0KIGh0dHAv
dGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3BpcGVsaW5lL2RlZmF1bHRfbGF5b3V0
Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL2J1
ZmZlcnMvbWFwLmh0bWwgWyBTa2lwIF0KQEAgLTQ5LDYgKzUwLDggQEAgaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdW5jYXB0dXJlZGVycm9yLmh0bWwgWyBTa2lwIF0KIGh0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL3RleHR1cmUv
c2FtZV9zdWJyZXNvdXJjZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
YXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy9idWZmZXIvd3cuaHRtbCBbIFNraXAgXQogaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvYnVmZmVyL3J3X2Fu
ZF93ci5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlv
bi9tZW1vcnlfc3luYy9idWZmZXIvc2luZ2xlX2J1ZmZlci5odG1sIFsgU2tpcCBdCitodHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy9idWZmZXIvbXVsdGlw
bGVfYnVmZmVycy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29w
ZXJhdGlvbi9zYW1wbGluZy9maWx0ZXJfbW9kZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9zYW1wbGluZy9sb2RfY2xhbXAuaHRtbCBbIFNraXAg
XQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vc2FtcGxpbmcvYW5pc290
cm9weS5odG1sIFsgU2tpcCBdCkBAIC01OSw2ICs2Miw3IEBAIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvb3BlcmF0aW9uL3ZlcnRleF9zdGF0ZS9pbmRleF9mb3JtYXQuaHRtbCBbIFNraXAg
XQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vY29tcHV0ZS9iYXNpYy5o
dG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9xdWV1
ZS93cml0ZUJ1ZmZlci5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBp
L29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvcmVhZC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvZm9ybWF0X3JlaW50ZXJwcmV0
YXRpb24uaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRp
b24vdGV4dHVyZV92aWV3L3dyaXRlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvb3BlcmF0aW9uL2NvbXB1dGVfcGlwZWxpbmUvZW50cnlfcG9pbnRfbmFtZS5odG1s
IFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9kZXZpY2Uv
bG9zdC5odG1sIFsgU2tpcCBdCkBAIC0xMDgsNiArMTEyLDcgQEAgaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL3Byb2dyYW1tYWJsZS9waXBlbGluZV9iaW5k
X2dyb3UKIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvdmFsaWRhdGlvbi9lbmNvZGluZy9i
ZWdpblJlbmRlclBhc3MuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2Fw
aS92YWxpZGF0aW9uL2VuY29kaW5nL3JlbmRlcl9idW5kbGUuaHRtbCBbIFNraXAgXQogaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2VuY29kZXJfc3RhdGUu
aHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL3N0
YXRlL2RldmljZV9sb3N0L2Rlc3Ryb3kuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L2FwaS92YWxpZGF0aW9uL2NyZWF0ZVRleHR1cmUuaHRtbCBbIFNraXAgXQogaHR0cC90
ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2luaXRpYWxpemF0aW9uL3JlcXVlc3RE
ZXZpY2UuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0
aW9uL3Jlc291cmNlX3VzYWdlcy90ZXh0dXJlL2luX3Bhc3NfZW5jb2Rlci5odG1sIFsgU2tpcCBd
CkBAIC0xNDcsNiArMTUyLDcgQEAgaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVj
dXRpb24vcm9idXN0X2FjY2Vzcy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvc2hhZGVyL2V4ZWN1dGlvbi9zYW1wbGluZy9ncmFkaWVudHNfaW5fdmFyeWluZ19sb29wLmh0
bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL3pl
cm9faW5pdC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4
ZWN1dGlvbi9yb2J1c3RfYWNjZXNzX3ZlcnRleC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3dl
YmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9ldmFsdWF0aW9uX29yZGVyLmh0bWwgWyBTa2lw
IF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24v
dW5hcnkvZjMyX2FyaXRobWV0aWMuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2Vi
Z3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9jYWxsL2J1aWx0aW4vYWxsLmh0bWwgWyBT
a2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Np
b24vY2FsbC9idWlsdGluL3NlbGVjdC5odG1sIFsgU2tpcCBdCkBAIC0xNzgsOSArMTg0LDExIEBA
IGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2Fs
bC9idWlsdGluL2NsYW1wLmh0bWwgWyBTCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVy
L2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9zaW4uaHRtbCBbIFNraXAgXQogaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9jYWxsL2J1
aWx0aW4vZmlyc3RMZWFkaW5nQml0Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vYmluYXJ5L2JpdHdpc2UuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lv
bi9iaW5hcnkvZjMyX2xvZ2ljYWwuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2Vi
Z3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2FyaXRobWV0aWMuaHRt
bCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vc2hh
ZGVyX2lvL3NoYXJlZF9zdHJ1Y3RzLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9zaGFkZXIvZXhlY3V0aW9uL3NoYWRlcl9pby9jb21wdXRlX2J1aWx0aW5zLmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi90b2tlbnMu
aHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9u
L3ZhcmlhYmxlX2FuZF9jb25zdC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvc2hhZGVyL3ZhbGlkYXRpb24vc2hhZGVyX2lvL2J1aWx0aW5zLmh0bWwgWyBTa2lwIF0KIGh0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vaW52YXJp
YW50Lmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1z
aW11bGF0b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
c2ltdWxhdG9yLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI1ZDY1ZTY4YjVjYS4uZTExYWMw
ODIyMDE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdr
MS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0
b3Itd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAgaHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L3dlYl9wbGF0Zm9ybS9jYW52YXMvZ2V0Q3VycmVudFRleHR1cmUuaHRtbCBbIFNr
aXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3dlYl9wbGF0Zm9ybS9jYW52YXMvY29udGV4
dF9jcmVhdGlvbi5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvd2ViX3Bs
YXRmb3JtL2NhbnZhcy9jb25maWd1cmUuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUv
d2ViZ3B1L3dlYl9wbGF0Zm9ybS93b3JrZXIvd29ya2VyLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVz
dHMvd2ViZ3B1L3dlYmdwdS91dGlsL3RleHR1cmUvdGV4dHVyZV9vay5odG1sIFsgU2tpcCBdCiBo
dHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvdXRpbC90ZXh0dXJlL3RleGVsX2RhdGEuaHRtbCBbIFNr
aXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vcGlwZWxpbmUvZGVm
YXVsdF9sYXlvdXQuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9v
cGVyYXRpb24vYnVmZmVycy9tYXAuaHRtbCBbIFNraXAgXQpAQCAtNTksNiArNjAsOCBAQCBodHRw
L3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi91bmNhcHR1cmVkZXJyb3IuaHRtbCBb
IFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5
bmMvdGV4dHVyZS9zYW1lX3N1YnJlc291cmNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2Vi
Z3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci93dy5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy9i
dWZmZXIvcndfYW5kX3dyLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9zaW5nbGVfYnVmZmVyLmh0bWwgWyBTa2lw
IF0KK2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1
ZmZlci9tdWx0aXBsZV9idWZmZXJzLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9hcGkvb3BlcmF0aW9uL3NhbXBsaW5nL2ZpbHRlcl9tb2RlLmh0bWwgWyBTa2lwIF0KIGh0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3NhbXBsaW5nL2xvZF9jbGFtcC5o
dG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9zYW1w
bGluZy9hbmlzb3Ryb3B5Lmh0bWwgWyBTa2lwIF0KQEAgLTY5LDYgKzcyLDcgQEAgaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdmVydGV4X3N0YXRlL2luZGV4X2Zvcm1hdC5o
dG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9jb21w
dXRlL2Jhc2ljLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3Bl
cmF0aW9uL3F1ZXVlL3dyaXRlQnVmZmVyLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3RleHR1cmVfdmlldy9yZWFkLmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3RleHR1cmVfdmlldy9mb3JtYXRf
cmVpbnRlcnByZXRhdGlvbi5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
YXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvd3JpdGUuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vY29tcHV0ZV9waXBlbGluZS9lbnRyeV9wb2lu
dF9uYW1lLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0
aW9uL2RldmljZS9sb3N0Lmh0bWwgWyBTa2lwIF0KQEAgLTExOCw2ICsxMjIsNyBAQCBodHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvcHJvZ3JhbW1hYmxlL3Bp
cGVsaW5lX2JpbmRfZ3JvdQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9u
L2VuY29kaW5nL2JlZ2luUmVuZGVyUGFzcy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvcmVuZGVyX2J1bmRsZS5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvZW5j
b2Rlcl9zdGF0ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3Zh
bGlkYXRpb24vc3RhdGUvZGV2aWNlX2xvc3QvZGVzdHJveS5odG1sIFsgU2tpcCBdCiBodHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vY3JlYXRlVGV4dHVyZS5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vaW5pdGlhbGl6YXRp
b24vcmVxdWVzdERldmljZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
YXBpL3ZhbGlkYXRpb24vcmVzb3VyY2VfdXNhZ2VzL3RleHR1cmUvaW5fcGFzc19lbmNvZGVyLmh0
bWwgWyBTa2lwIF0KQEAgLTE1Nyw2ICsxNjIsNyBAQCBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
c2hhZGVyL2V4ZWN1dGlvbi9yb2J1c3RfYWNjZXNzLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL3NhbXBsaW5nL2dyYWRpZW50c19pbl92YXJ5
aW5nX2xvb3AuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9l
eGVjdXRpb24vemVyb19pbml0Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9zaGFkZXIvZXhlY3V0aW9uL3JvYnVzdF9hY2Nlc3NfdmVydGV4Lmh0bWwgWyBTa2lwIF0KK2h0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V2YWx1YXRpb25fb3JkZXIu
aHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24v
ZXhwcmVzc2lvbi91bmFyeS9mMzJfYXJpdGhtZXRpYy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9h
bGwuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRp
b24vZXhwcmVzc2lvbi9jYWxsL2J1aWx0aW4vc2VsZWN0Lmh0bWwgWyBTa2lwIF0KQEAgLTE4OCw5
ICsxOTQsMTEgQEAgaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhw
cmVzc2lvbi9jYWxsL2J1aWx0aW4vY2xhbXAuaHRtbCBbIFMKIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL3Npbi5odG1sIFsg
U2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNz
aW9uL2NhbGwvYnVpbHRpbi9maXJzdExlYWRpbmdCaXQuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvYml0d2lz
ZS5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlv
bi9leHByZXNzaW9uL2JpbmFyeS9mMzJfbG9naWNhbC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL2JpbmFyeS9mMzJfYXJp
dGhtZXRpYy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4
ZWN1dGlvbi9zaGFkZXJfaW8vc2hhcmVkX3N0cnVjdHMuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0
cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vc2hhZGVyX2lvL2NvbXB1dGVfYnVpbHRp
bnMuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0
aW9uL3Rva2Vucy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVy
L3ZhbGlkYXRpb24vdmFyaWFibGVfYW5kX2NvbnN0Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vYnVpbHRpbnMuaHRtbCBb
IFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3NoYWRl
cl9pby9pbnZhcmlhbnQuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDI2NTcxNjlmYWE1Yi4uMDQzOTVjNWJjZGJlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
NjkzLDYgKzE2OTMsNyBAQCBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvd2ViX3BsYXRmb3JtL2Nh
bnZhcy9nZXRDdXJyZW50VGV4dHVyZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvd2ViX3BsYXRmb3JtL2NhbnZhcy9jb250ZXh0X2NyZWF0aW9uLmh0bWwgWyBTa2lwIF0K
IGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS93ZWJfcGxhdGZvcm0vY2FudmFzL2NvbmZpZ3VyZS5o
dG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvd2ViX3BsYXRmb3JtL3dvcmtl
ci93b3JrZXIuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3V0aWwvdGV4
dHVyZS90ZXh0dXJlX29rLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS91
dGlsL3RleHR1cmUvdGV4ZWxfZGF0YS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvYXBpL29wZXJhdGlvbi9waXBlbGluZS9kZWZhdWx0X2xheW91dC5odG1sIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9idWZmZXJzL21hcC5odG1s
IFsgU2tpcCBdCkBAIC0xNzIzLDYgKzE3MjQsOCBAQCBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUv
YXBpL29wZXJhdGlvbi91bmNhcHR1cmVkZXJyb3IuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93
ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vbWVtb3J5X3N5bmMvdGV4dHVyZS9zYW1lX3N1YnJl
c291cmNlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0
aW9uL21lbW9yeV9zeW5jL2J1ZmZlci93dy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdw
dS93ZWJncHUvYXBpL29wZXJhdGlvbi9tZW1vcnlfc3luYy9idWZmZXIvcndfYW5kX3dyLmh0bWwg
WyBTa2lwIF0KK2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9z
eW5jL2J1ZmZlci9zaW5nbGVfYnVmZmVyLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9hcGkvb3BlcmF0aW9uL21lbW9yeV9zeW5jL2J1ZmZlci9tdWx0aXBsZV9idWZmZXJz
Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9hcGkvb3BlcmF0aW9uL3Nh
bXBsaW5nL2ZpbHRlcl9tb2RlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9hcGkvb3BlcmF0aW9uL3NhbXBsaW5nL2xvZF9jbGFtcC5odG1sIFsgU2tpcCBdCiBodHRwL3Rl
c3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9zYW1wbGluZy9hbmlzb3Ryb3B5Lmh0bWwg
WyBTa2lwIF0KQEAgLTE3MzMsNiArMTczNiw3IEBAIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvb3BlcmF0aW9uL3ZlcnRleF9zdGF0ZS9pbmRleF9mb3JtYXQuaHRtbCBbIFNraXAgXQogaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vY29tcHV0ZS9iYXNpYy5odG1sIFsg
U2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9xdWV1ZS93cml0
ZUJ1ZmZlci5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJh
dGlvbi90ZXh0dXJlX3ZpZXcvcmVhZC5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL3dlYmdwdS93
ZWJncHUvYXBpL29wZXJhdGlvbi90ZXh0dXJlX3ZpZXcvZm9ybWF0X3JlaW50ZXJwcmV0YXRpb24u
aHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS9vcGVyYXRpb24vdGV4
dHVyZV92aWV3L3dyaXRlLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9h
cGkvb3BlcmF0aW9uL2NvbXB1dGVfcGlwZWxpbmUvZW50cnlfcG9pbnRfbmFtZS5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL29wZXJhdGlvbi9kZXZpY2UvbG9zdC5o
dG1sIFsgU2tpcCBdCkBAIC0xNzgyLDYgKzE3ODYsNyBAQCBodHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvcHJvZ3JhbW1hYmxlL3BpcGVsaW5lX2JpbmRfZ3Jv
dQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L2FwaS92YWxpZGF0aW9uL2VuY29kaW5nL2JlZ2lu
UmVuZGVyUGFzcy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3Zh
bGlkYXRpb24vZW5jb2RpbmcvcmVuZGVyX2J1bmRsZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vZW5jb2RpbmcvZW5jb2Rlcl9zdGF0ZS5odG1s
IFsgU2tpcCBdCitodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vc3RhdGUv
ZGV2aWNlX2xvc3QvZGVzdHJveS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvYXBpL3ZhbGlkYXRpb24vY3JlYXRlVGV4dHVyZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3Rz
L3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24vaW5pdGlhbGl6YXRpb24vcmVxdWVzdERldmlj
ZS5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRpb24v
cmVzb3VyY2VfdXNhZ2VzL3RleHR1cmUvaW5fcGFzc19lbmNvZGVyLmh0bWwgWyBTa2lwIF0KQEAg
LTE4MjEsNiArMTgyNiw3IEBAIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0
aW9uL3JvYnVzdF9hY2Nlc3MuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1
L3NoYWRlci9leGVjdXRpb24vc2FtcGxpbmcvZ3JhZGllbnRzX2luX3ZhcnlpbmdfbG9vcC5odG1s
IFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi96ZXJv
X2luaXQuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVj
dXRpb24vcm9idXN0X2FjY2Vzc192ZXJ0ZXguaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy93ZWJn
cHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXZhbHVhdGlvbl9vcmRlci5odG1sIFsgU2tpcCBd
CiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9uL3Vu
YXJ5L2YzMl9hcml0aG1ldGljLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdw
dS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2FsbC9idWlsdGluL2FsbC5odG1sIFsgU2tp
cCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVyL2V4ZWN1dGlvbi9leHByZXNzaW9u
L2NhbGwvYnVpbHRpbi9zZWxlY3QuaHRtbCBbIFNraXAgXQpAQCAtMTg1Miw5ICsxODU4LDExIEBA
IGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vY2Fs
bC9idWlsdGluL2NsYW1wLmh0bWwgWyBTCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvc2hhZGVy
L2V4ZWN1dGlvbi9leHByZXNzaW9uL2NhbGwvYnVpbHRpbi9zaW4uaHRtbCBbIFNraXAgXQogaHR0
cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9jYWxsL2J1
aWx0aW4vZmlyc3RMZWFkaW5nQml0Lmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9zaGFkZXIvZXhlY3V0aW9uL2V4cHJlc3Npb24vYmluYXJ5L2JpdHdpc2UuaHRtbCBbIFNr
aXAgXQoraHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lv
bi9iaW5hcnkvZjMyX2xvZ2ljYWwuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2Vi
Z3B1L3NoYWRlci9leGVjdXRpb24vZXhwcmVzc2lvbi9iaW5hcnkvZjMyX2FyaXRobWV0aWMuaHRt
bCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci9leGVjdXRpb24vc2hh
ZGVyX2lvL3NoYXJlZF9zdHJ1Y3RzLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dl
YmdwdS9zaGFkZXIvZXhlY3V0aW9uL3NoYWRlcl9pby9jb21wdXRlX2J1aWx0aW5zLmh0bWwgWyBT
a2lwIF0KK2h0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi90b2tlbnMu
aHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9u
L3ZhcmlhYmxlX2FuZF9jb25zdC5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJn
cHUvc2hhZGVyL3ZhbGlkYXRpb24vc2hhZGVyX2lvL2J1aWx0aW5zLmh0bWwgWyBTa2lwIF0KIGh0
dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vaW52YXJp
YW50Lmh0bWwgWyBTa2lwIF0KQEAgLTE4NjIsNSArMTg3MCwzIEBAIGh0dHAvdGVzdHMvd2ViZ3B1
L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi9zaGFkZXJfaW8vaW50ZXJwb2xhdGUuaHRtbCBbIFNr
aXAgXQogaHR0cC90ZXN0cy93ZWJncHUvd2ViZ3B1L3NoYWRlci92YWxpZGF0aW9uL3NoYWRlcl9p
by9nZW5lcmljLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvd2ViZ3B1L3dlYmdwdS9zaGFkZXIv
dmFsaWRhdGlvbi9zaGFkZXJfaW8vbG9jYXRpb25zLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMv
d2ViZ3B1L3dlYmdwdS9zaGFkZXIvdmFsaWRhdGlvbi93Z3NsL2Jhc2ljLmh0bWwgWyBTa2lwIF0K
LQotd2Via2l0Lm9yZy9iLzIzODY0MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtY29udGFpbi9jb250YWluLWJvZHktb3ZlcmZsb3ctMDAyLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjNzcyNDI4MDEyZGEuLjM3NDdkY2E5YjAwYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTA0LTE3ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQ
VV0gVXBkYXRlIFdlYkdQVSBDVFMgdG8gcmV2aXNpb24gNTQ5ZDdjMmYxNjM3MzIxYTkyNDdmMGEz
YWIwMjJmOTE5ZTVjYTVkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM5NDQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTY3JpcHRzL2ltcG9ydC13ZWJncHUtY3RzOgorCiAyMDIyLTA0LTEyICBKb25h
dGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0g
QWxsb3cgcHJvamVjdHMgdG8gZGVjbGFyZSBhbHRlcm5hdGUgcmVtb3RlcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9pbXBvcnQtd2ViZ3B1LWN0cyBiL1Rvb2xzL1NjcmlwdHMvaW1wb3J0LXdl
YmdwdS1jdHMKaW5kZXggMTFjM2E5ZTlkMjAzLi4yYmE0YjljMmY2MjcgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvaW1wb3J0LXdlYmdwdS1jdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9pbXBvcnQt
d2ViZ3B1LWN0cwpAQCAtOTUsNyArOTUsNiBAQCBkZWYgZ2VuZXJhdGVUZXN0cyhjdHNDaGVja291
dERpcik6CiAgICAgICAgIHJlZnRlc3RzUGF0aCA9IHBhdGhsaWIuUGF0aChkZXN0aW5hdGlvblBh
dGgsICJ3ZWJncHUiLCAid2ViX3BsYXRmb3JtIiwgInJlZnRlc3RzIikKICAgICAgICAgaWYgcmVm
dGVzdHNQYXRoLmlzX2RpcigpOgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShyZWZ0ZXN0c1Bh
dGgpCi0gICAgICAgIHByaW50KCJEb25lISIpCiAKIGRlZiBjaGVja291dEFuZEJ1aWxkSW5UZW1w
b3JhcnlEaXJlY3RvcnkoY29udGludWF0aW9uKToKICAgICB0cnk6Cg==
</data>
<flag name="review"
          id="486473"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
    <flag name="commit-queue"
          id="486480"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>