<?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>204182</bug_id>
          
          <creation_ts>2019-11-13 17:26:27 -0800</creation_ts>
          <short_desc>[WebGPU] Update Babylon WebGPU demos to work on ToT</short_desc>
          <delta_ts>2019-11-13 18:28:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1590131</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-11-13 17:26:27 -0800</bug_when>
    <thetext>[WebGPU] Update Babylon WebGPU demos to work on ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590137</commentid>
    <comment_count>1</comment_count>
      <attachid>383527</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-11-13 17:37:16 -0800</bug_when>
    <thetext>Created attachment 383527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590159</commentid>
    <comment_count>2</comment_count>
      <attachid>383527</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-13 18:27:03 -0800</bug_when>
    <thetext>Comment on attachment 383527
Patch

Clearing flags on attachment: 383527

Committed r252445: &lt;https://trac.webkit.org/changeset/252445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590160</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-13 18:27:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590161</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-13 18:28:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/57176877&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383527</attachid>
            <date>2019-11-13 17:37:16 -0800</date>
            <delta_ts>2019-11-13 18:27:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204182-20191113173715.patch</filename>
            <type>text/plain</type>
            <size>162203</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDIzCmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQu
b3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCmluZGV4IDUzYWUw
ZjQ2MjQxMWEzMDdhNDJmOTNkMmQ4OWViMTQ2MjRlZTQxNmYuLjEwMzliNTY5OWQ0MGEyY2JmNWFk
YjI0ODAwNWYxN2U3ZThiNDQyMmUgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hh
bmdlTG9nCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTktMTEtMTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
KworICAgICAgICBbV2ViR1BVXSBVcGRhdGUgQmFieWxvbiBXZWJHUFUgZGVtb3MgdG8gd29yayBv
biBUb1QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDMg
dGhpbmdzIHdlcmUgd3Jvbmc6CisKKyAgICAgICAgLSBUaGVyZSBzZWVtZWQgdG8gYmUgYSBidWcg
aW4gdGhlIGxvYWRlciBzY3JpcHQuIEkgZml4ZWQgdGhlIGJ1ZyBhbmQgYWRkZWQgYSBsb2NhbCBj
b3B5CisgICAgICAgICAgaGVyZSBzbyB3ZSBkb24ndCBoYXZlIHRvIGtlZXAgaG90bGlua2luZyB0
byB0aGUgQmFieWxvbiBvbmUuCisgICAgICAgIC0gSSBoYWQgdXBkYXRlZCB0aGUgaGVsbWV0IHNo
YWRlcnMgaW4KKyAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vbGl0aGVydW0vV2Vic2l0ZS9j
b21taXQvZjc3NjhlZDQzMDEyZmIwNjM0NTc2ODIxMWVhOTA4MTVkODFmNDFiNAorICAgICAgICAg
IGJ1dCBJIGRpZG4ndCB1cGRhdGUgdGhlIHNwaGVyZSBzaGFkZXJzLgorICAgICAgICAtIHIyNTI0
MjMgdHVybmVkIG9mZiB0aGUgc3BoZXJlIHJlbmRlcmluZyBhZnRlciAyIHNlY29uZHMuIFRoaXMg
cGF0Y2ggcmVtb3ZlcyB0aGF0LgorCisgICAgICAgICogZGVtb3Mvd2ViZ3B1L2JhYnlsb24vYmFi
eWxvbmpzLmxvYWRlcnMubWluLmpzOiBBZGRlZC4KKyAgICAgICAgKHJldHVybik6CisgICAgICAg
IChyZXR1cm4ubi5kKToKKyAgICAgICAgKHJldHVybi5nZXQgbi5yKToKKyAgICAgICAgKHJldHVy
bi5uLnQpOgorICAgICAgICAocmV0dXJuLik6CisgICAgICAgIChyZXR1cm4ubi5uKToKKyAgICAg
ICAgKHJldHVybi5uLm8pOgorICAgICAgICAqIGRlbW9zL3dlYmdwdS9iYWJ5bG9uL29uZUhlbG1l
dFdlYkdQVS5odG1sOgorICAgICAgICAqIGRlbW9zL3dlYmdwdS9iYWJ5bG9uL29uZVNwaGVyZVdl
YkdQVS5odG1sOgorICAgICAgICAqIGRlbW9zL3dlYmdwdS9iYWJ5bG9uL29uZVNwaGVyZVdlYkdQ
VVdTTFNoYWRlcnMuanM6CisgICAgICAgIChzYW1wbGVyLnJlZmxlY3Rpb25TYW1wbGVyU2FtcGxl
ci5yZWdpc3Rlcik6CisgICAgICAgIChmbG9hdDMubm9ybWFsLmF0dHJpYnV0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogZGVtb3Mvd2ViZ3B1L2JhYnlsb24vdmVydGV4U2hhZGVyR0xTTDEuZ2xzbDog
UmVtb3ZlZC4gVW5uZWNlc3NhcnkuCisKIDIwMTktMTEtMTMgIERlYW4gSmFja3NvbiAgPGRpbm9A
YXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzb21lIFdlYkdQVSBkZW1vcwpkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvd2Via2l0Lm9yZy9kZW1vcy93ZWJncHUvYmFieWxvbi9iYWJ5bG9uanMubG9hZGVy
cy5taW4uanMgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RlbW9zL3dlYmdwdS9iYWJ5bG9uL2JhYnls
b25qcy5sb2FkZXJzLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTkzMzQwYWUwNTZmYTExMjA0ZDRjNWIz
ODUyNGZmOGMxMmNhZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9k
ZW1vcy93ZWJncHUvYmFieWxvbi9iYWJ5bG9uanMubG9hZGVycy5taW4uanMKQEAgLTAsMCArMSwx
NiBAQAorIWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09
dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KHJlcXVpcmUoImJhYnlsb25qcyIpKToiZnVu
Y3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiYmFieWxvbmpzLWxvYWRl
cnMiLFsiYmFieWxvbmpzIl0sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHNbImJh
Ynlsb25qcy1sb2FkZXJzIl09dChyZXF1aXJlKCJiYWJ5bG9uanMiKSk6ZS5MT0FERVJTPXQoZS5C
QUJZTE9OKX0oInVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVv
ZiBnbG9iYWw/Z2xvYmFsOnRoaXMsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0
PXt9O2Z1bmN0aW9uIG4ocil7aWYodFtyXSlyZXR1cm4gdFtyXS5leHBvcnRzO3ZhciBvPXRbcl09
e2k6cixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW3JdLmNhbGwoby5leHBvcnRzLG8sby5leHBv
cnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9cmV0dXJuIG4ubT1lLG4uYz10LG4uZD1mdW5jdGlvbihl
LHQscil7bi5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAs
Z2V0OnJ9KX0sbi5yPWZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1i
b2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1Rh
Zyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIs
e3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbihlLHQpe2lmKDEmdCYmKGU9bihlKSksOCZ0KXJldHVy
biBlO2lmKDQmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7
dmFyIHI9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIociksT2JqZWN0LmRlZmluZVByb3BlcnR5
KHIsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJnQmJiJzdHJpbmciIT10eXBl
b2YgZSlmb3IodmFyIG8gaW4gZSluLmQocixvLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5k
KG51bGwsbykpO3JldHVybiByfSxuLm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5fX2VzTW9kdWxl
P2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJu
IG4uZCh0LCJhIix0KSx0fSxuLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlw
ZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG4ucD0iIixuKG4ucz0xOCl9KFtmdW5jdGlvbih0
LG4pe3QuZXhwb3J0cz1lfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LCJhIixm
dW5jdGlvbigpe3JldHVybiBhfSksbi5kKHQsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIGl9KTt2YXIg
cj1uKDApLG89bigyKSxhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5HZXQ9ZnVu
Y3Rpb24oZSx0LG4pe2lmKCF0fHxudWxsPT1ufHwhdFtuXSl0aHJvdyBuZXcgRXJyb3IoZSsiOiBG
YWlsZWQgdG8gZmluZCBpbmRleCAoIituKyIpIik7cmV0dXJuIHRbbl19LGUuQXNzaWduPWZ1bmN0
aW9uKGUpe2lmKGUpZm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5pbmRleD10fSxlfSgp
LGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuX2NvbXBsZXRlUHJvbWlzZXM9bmV3IEFy
cmF5LHRoaXMuX2Rpc3Bvc2VkPSExLHRoaXMuX3N0YXRlPW51bGwsdGhpcy5fZXh0ZW5zaW9ucz1u
ZXcgQXJyYXksdGhpcy5fZGVmYXVsdEJhYnlsb25NYXRlcmlhbERhdGE9e30sdGhpcy5fcmVxdWVz
dHM9bmV3IEFycmF5LHRoaXMuX3BhcmVudD1lfXJldHVybiBlLlJlZ2lzdGVyRXh0ZW5zaW9uPWZ1
bmN0aW9uKHQsbil7ZS5VbnJlZ2lzdGVyRXh0ZW5zaW9uKHQpJiZyLkxvZ2dlci5XYXJuKCJFeHRl
bnNpb24gd2l0aCB0aGUgbmFtZSAnIit0KyInIGFscmVhZHkgZXhpc3RzIiksZS5fUmVnaXN0ZXJl
ZEV4dGVuc2lvbnNbdF09e2ZhY3Rvcnk6bn19LGUuVW5yZWdpc3RlckV4dGVuc2lvbj1mdW5jdGlv
bih0KXtyZXR1cm4hIWUuX1JlZ2lzdGVyZWRFeHRlbnNpb25zW3RdJiYoZGVsZXRlIGUuX1JlZ2lz
dGVyZWRFeHRlbnNpb25zW3RdLCEwKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBl
LCJzdGF0ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zdGF0ZX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImds
dGYiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2x0Zn0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImJpbiIse2dl
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9iaW59LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZToh
MH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYmFieWxvblNjZW5lIix7Z2V0
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhYnlsb25TY2VuZX0sZW51bWVyYWJsZTohMCxjb25m
aWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInJvb3RCYWJ5
bG9uTWVzaCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290QmFieWxvbk1lc2h9LGVu
dW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlv
bigpe2lmKCF0aGlzLl9kaXNwb3NlZCl7dGhpcy5fZGlzcG9zZWQ9ITA7Zm9yKHZhciBlPTAsdD10
aGlzLl9yZXF1ZXN0cztlPHQubGVuZ3RoO2UrKyl7dFtlXS5hYm9ydCgpfWZvcih2YXIgbiBpbiB0
aGlzLl9yZXF1ZXN0cy5sZW5ndGg9MCx0aGlzLl9jb21wbGV0ZVByb21pc2VzLmxlbmd0aD0wLHRo
aXMuX2V4dGVuc2lvbnMpe3ZhciByPXRoaXMuX2V4dGVuc2lvbnNbbl07ci5kaXNwb3NlJiZyLmRp
c3Bvc2UoKSxkZWxldGUgdGhpcy5fZXh0ZW5zaW9uc1tuXX1kZWxldGUgdGhpcy5fZ2x0ZixkZWxl
dGUgdGhpcy5fYmFieWxvblNjZW5lLGRlbGV0ZSB0aGlzLl9yb290QmFieWxvbk1lc2gsZGVsZXRl
IHRoaXMuX3Byb2dyZXNzQ2FsbGJhY2ssdGhpcy5fcGFyZW50Ll9jbGVhcigpfX0sZS5wcm90b3R5
cGUuaW1wb3J0TWVzaEFzeW5jPWZ1bmN0aW9uKGUsdCxuLHIsbyxhKXt2YXIgaT10aGlzO3JldHVy
biBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7aS5fYmFieWxvblNjZW5lPXQsaS5f
cm9vdFVybD1yLGkuX2ZpbGVOYW1lPWF8fCJzY2VuZSIsaS5fcHJvZ3Jlc3NDYWxsYmFjaz1vLGku
X2xvYWREYXRhKG4pO3ZhciBzPW51bGw7aWYoZSl7dmFyIGw9e307aWYoaS5fZ2x0Zi5ub2Rlcylm
b3IodmFyIHU9MCxjPWkuX2dsdGYubm9kZXM7dTxjLmxlbmd0aDt1Kyspe3ZhciBmPWNbdV07Zi5u
YW1lJiYobFtmLm5hbWVdPWYuaW5kZXgpfXM9KGUgaW5zdGFuY2VvZiBBcnJheT9lOltlXSkubWFw
KGZ1bmN0aW9uKGUpe3ZhciB0PWxbZV07aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIkZh
aWxlZCB0byBmaW5kIG5vZGUgJyIrZSsiJyIpO3JldHVybiB0fSl9cmV0dXJuIGkuX2xvYWRBc3lu
YyhzLGZ1bmN0aW9uKCl7cmV0dXJue21lc2hlczppLl9nZXRNZXNoZXMoKSxwYXJ0aWNsZVN5c3Rl
bXM6W10sc2tlbGV0b25zOmkuX2dldFNrZWxldG9ucygpLGFuaW1hdGlvbkdyb3VwczppLl9nZXRB
bmltYXRpb25Hcm91cHMoKX19KX0pfSxlLnByb3RvdHlwZS5sb2FkQXN5bmM9ZnVuY3Rpb24oZSx0
LG4scixvKXt2YXIgYT10aGlzO3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9u
KCl7cmV0dXJuIGEuX2JhYnlsb25TY2VuZT1lLGEuX3Jvb3RVcmw9bixhLl9maWxlTmFtZT1vfHwi
c2NlbmUiLGEuX3Byb2dyZXNzQ2FsbGJhY2s9cixhLl9sb2FkRGF0YSh0KSxhLl9sb2FkQXN5bmMo
bnVsbCxmdW5jdGlvbigpe30pfSl9LGUucHJvdG90eXBlLl9sb2FkQXN5bmM9ZnVuY3Rpb24oZSx0
KXt2YXIgbj10aGlzO3JldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7bi5f
dW5pcXVlUm9vdFVybD0tMT09PW4uX3Jvb3RVcmwuaW5kZXhPZigiZmlsZToiKSYmbi5fZmlsZU5h
bWU/bi5fcm9vdFVybDoiIituLl9yb290VXJsK0RhdGUubm93KCkrIi8iLG4uX2xvYWRFeHRlbnNp
b25zKCksbi5fY2hlY2tFeHRlbnNpb25zKCk7dmFyIGk9by5HTFRGTG9hZGVyU3RhdGVbby5HTFRG
TG9hZGVyU3RhdGUuTE9BRElOR10rIiA9PiAiK28uR0xURkxvYWRlclN0YXRlW28uR0xURkxvYWRl
clN0YXRlLlJFQURZXSxzPW8uR0xURkxvYWRlclN0YXRlW28uR0xURkxvYWRlclN0YXRlLkxPQURJ
TkddKyIgPT4gIitvLkdMVEZMb2FkZXJTdGF0ZVtvLkdMVEZMb2FkZXJTdGF0ZS5DT01QTEVURV07
bi5fcGFyZW50Ll9zdGFydFBlcmZvcm1hbmNlQ291bnRlcihpKSxuLl9wYXJlbnQuX3N0YXJ0UGVy
Zm9ybWFuY2VDb3VudGVyKHMpLG4uX3NldFN0YXRlKG8uR0xURkxvYWRlclN0YXRlLkxPQURJTkcp
LG4uX2V4dGVuc2lvbnNPbkxvYWRpbmcoKTt2YXIgbD1uZXcgQXJyYXksdT1uLl9iYWJ5bG9uU2Nl
bmUuYmxvY2tNYXRlcmlhbERpcnR5TWVjaGFuaXNtO2lmKG4uX2JhYnlsb25TY2VuZS5ibG9ja01h
dGVyaWFsRGlydHlNZWNoYW5pc209ITAsZSlsLnB1c2gobi5sb2FkU2NlbmVBc3luYygiL25vZGVz
Iix7bm9kZXM6ZSxpbmRleDotMX0pKTtlbHNlIGlmKG51bGwhPW4uX2dsdGYuc2NlbmV8fG4uX2ds
dGYuc2NlbmVzJiZuLl9nbHRmLnNjZW5lc1swXSl7dmFyIGM9YS5HZXQoIi9zY2VuZSIsbi5fZ2x0
Zi5zY2VuZXMsbi5fZ2x0Zi5zY2VuZXx8MCk7bC5wdXNoKG4ubG9hZFNjZW5lQXN5bmMoIi9zY2Vu
ZXMvIitjLmluZGV4LGMpKX1uLl9iYWJ5bG9uU2NlbmUuYmxvY2tNYXRlcmlhbERpcnR5TWVjaGFu
aXNtPXUsbi5fcGFyZW50LmNvbXBpbGVNYXRlcmlhbHMmJmwucHVzaChuLl9jb21waWxlTWF0ZXJp
YWxzQXN5bmMoKSksbi5fcGFyZW50LmNvbXBpbGVTaGFkb3dHZW5lcmF0b3JzJiZsLnB1c2gobi5f
Y29tcGlsZVNoYWRvd0dlbmVyYXRvcnNBc3luYygpKTt2YXIgZj1Qcm9taXNlLmFsbChsKS50aGVu
KGZ1bmN0aW9uKCl7cmV0dXJuIG4uX3Jvb3RCYWJ5bG9uTWVzaCYmbi5fcm9vdEJhYnlsb25NZXNo
LnNldEVuYWJsZWQoITApLG4uX3NldFN0YXRlKG8uR0xURkxvYWRlclN0YXRlLlJFQURZKSxuLl9l
eHRlbnNpb25zT25SZWFkeSgpLG4uX3N0YXJ0QW5pbWF0aW9ucygpLHQoKX0pO3JldHVybiBmLnRo
ZW4oZnVuY3Rpb24oKXtuLl9wYXJlbnQuX2VuZFBlcmZvcm1hbmNlQ291bnRlcihpKSxyLlRvb2xz
LlNldEltbWVkaWF0ZShmdW5jdGlvbigpe24uX2Rpc3Bvc2VkfHxQcm9taXNlLmFsbChuLl9jb21w
bGV0ZVByb21pc2VzKS50aGVuKGZ1bmN0aW9uKCl7bi5fcGFyZW50Ll9lbmRQZXJmb3JtYW5jZUNv
dW50ZXIocyksbi5fc2V0U3RhdGUoby5HTFRGTG9hZGVyU3RhdGUuQ09NUExFVEUpLG4uX3BhcmVu
dC5vbkNvbXBsZXRlT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnModm9pZCAwKSxuLl9wYXJlbnQu
b25Db21wbGV0ZU9ic2VydmFibGUuY2xlYXIoKSxuLmRpc3Bvc2UoKX0sZnVuY3Rpb24oZSl7bi5f
cGFyZW50Lm9uRXJyb3JPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhlKSxuLl9wYXJlbnQub25F
cnJvck9ic2VydmFibGUuY2xlYXIoKSxuLmRpc3Bvc2UoKX0pfSl9KSxmfSxmdW5jdGlvbihlKXt0
aHJvdyBuLl9kaXNwb3NlZHx8KG4uX3BhcmVudC5vbkVycm9yT2JzZXJ2YWJsZS5ub3RpZnlPYnNl
cnZlcnMoZSksbi5fcGFyZW50Lm9uRXJyb3JPYnNlcnZhYmxlLmNsZWFyKCksbi5kaXNwb3NlKCkp
LGV9KX0sZS5wcm90b3R5cGUuX2xvYWREYXRhPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2dsdGY9SlNP
Ti5wYXJzZShlKSx0aGlzLl9zZXR1cERhdGEoKSxlLmJpbil7dmFyIHQ9dGhpcy5fZ2x0Zi5idWZm
ZXJzO2lmKHQmJnRbMF0mJiF0WzBdLnVyaSl7dmFyIG49dFswXTsobi5ieXRlTGVuZ3RoPGUuYmlu
LmJ5dGVMZW5ndGgtM3x8bi5ieXRlTGVuZ3RoPmUuYmluLmJ5dGVMZW5ndGgpJiZyLkxvZ2dlci5X
YXJuKCJCaW5hcnkgYnVmZmVyIGxlbmd0aCAoIituLmJ5dGVMZW5ndGgrIikgZnJvbSBKU09OIGRv
ZXMgbm90IG1hdGNoIGNodW5rIGxlbmd0aCAoIitlLmJpbi5ieXRlTGVuZ3RoKyIpIiksdGhpcy5f
YmluPWUuYmlufWVsc2Ugci5Mb2dnZXIuV2FybigiVW5leHBlY3RlZCBCSU4gY2h1bmsiKX19LGUu
cHJvdG90eXBlLl9zZXR1cERhdGE9ZnVuY3Rpb24oKXtpZihhLkFzc2lnbih0aGlzLl9nbHRmLmFj
Y2Vzc29ycyksYS5Bc3NpZ24odGhpcy5fZ2x0Zi5hbmltYXRpb25zKSxhLkFzc2lnbih0aGlzLl9n
bHRmLmJ1ZmZlcnMpLGEuQXNzaWduKHRoaXMuX2dsdGYuYnVmZmVyVmlld3MpLGEuQXNzaWduKHRo
aXMuX2dsdGYuY2FtZXJhcyksYS5Bc3NpZ24odGhpcy5fZ2x0Zi5pbWFnZXMpLGEuQXNzaWduKHRo
aXMuX2dsdGYubWF0ZXJpYWxzKSxhLkFzc2lnbih0aGlzLl9nbHRmLm1lc2hlcyksYS5Bc3NpZ24o
dGhpcy5fZ2x0Zi5ub2RlcyksYS5Bc3NpZ24odGhpcy5fZ2x0Zi5zYW1wbGVycyksYS5Bc3NpZ24o
dGhpcy5fZ2x0Zi5zY2VuZXMpLGEuQXNzaWduKHRoaXMuX2dsdGYuc2tpbnMpLGEuQXNzaWduKHRo
aXMuX2dsdGYudGV4dHVyZXMpLHRoaXMuX2dsdGYubm9kZXMpe2Zvcih2YXIgZT17fSx0PTAsbj10
aGlzLl9nbHRmLm5vZGVzO3Q8bi5sZW5ndGg7dCsrKXtpZigodT1uW3RdKS5jaGlsZHJlbilmb3Io
dmFyIHI9MCxvPXUuY2hpbGRyZW47cjxvLmxlbmd0aDtyKyspe2Vbb1tyXV09dS5pbmRleH19Zm9y
KHZhciBpPXRoaXMuX2NyZWF0ZVJvb3ROb2RlKCkscz0wLGw9dGhpcy5fZ2x0Zi5ub2RlcztzPGwu
bGVuZ3RoO3MrKyl7dmFyIHUsYz1lWyh1PWxbc10pLmluZGV4XTt1LnBhcmVudD12b2lkIDA9PT1j
P2k6dGhpcy5fZ2x0Zi5ub2Rlc1tjXX19fSxlLnByb3RvdHlwZS5fbG9hZEV4dGVuc2lvbnM9ZnVu
Y3Rpb24oKXtmb3IodmFyIHQgaW4gZS5fUmVnaXN0ZXJlZEV4dGVuc2lvbnMpe3ZhciBuPWUuX1Jl
Z2lzdGVyZWRFeHRlbnNpb25zW3RdLmZhY3RvcnkodGhpcyk7bi5uYW1lIT09dCYmci5Mb2dnZXIu
V2FybigiVGhlIG5hbWUgb2YgdGhlIGdsVEYgbG9hZGVyIGV4dGVuc2lvbiBpbnN0YW5jZSBkb2Vz
IG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJlZCBuYW1lOiAiK24ubmFtZSsiICE9PSAiK3QpLHRoaXMu
X2V4dGVuc2lvbnMucHVzaChuKSx0aGlzLl9wYXJlbnQub25FeHRlbnNpb25Mb2FkZWRPYnNlcnZh
YmxlLm5vdGlmeU9ic2VydmVycyhuKX10aGlzLl9leHRlbnNpb25zLnNvcnQoZnVuY3Rpb24oZSx0
KXtyZXR1cm4oZS5vcmRlcnx8TnVtYmVyLk1BWF9WQUxVRSktKHQub3JkZXJ8fE51bWJlci5NQVhf
VkFMVUUpfSksdGhpcy5fcGFyZW50Lm9uRXh0ZW5zaW9uTG9hZGVkT2JzZXJ2YWJsZS5jbGVhcigp
fSxlLnByb3RvdHlwZS5fY2hlY2tFeHRlbnNpb25zPWZ1bmN0aW9uKCl7aWYodGhpcy5fZ2x0Zi5l
eHRlbnNpb25zUmVxdWlyZWQpZm9yKHZhciBlPWZ1bmN0aW9uKGUpe3ZhciBuPXQuX2V4dGVuc2lv
bnMuZmluZChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09ZX0pO2lmKCFufHwhbi5lbmFibGVk
KXRocm93IG5ldyBFcnJvcigiUmVxdWlyZSBleHRlbnNpb24gIitlKyIgaXMgbm90IGF2YWlsYWJs
ZSIpfSx0PXRoaXMsbj0wLHI9dGhpcy5fZ2x0Zi5leHRlbnNpb25zUmVxdWlyZWQ7bjxyLmxlbmd0
aDtuKyspe2UocltuXSl9fSxlLnByb3RvdHlwZS5fc2V0U3RhdGU9ZnVuY3Rpb24oZSl7dGhpcy5f
c3RhdGU9ZSx0aGlzLmxvZyhvLkdMVEZMb2FkZXJTdGF0ZVt0aGlzLl9zdGF0ZV0pfSxlLnByb3Rv
dHlwZS5fY3JlYXRlUm9vdE5vZGU9ZnVuY3Rpb24oKXt0aGlzLl9yb290QmFieWxvbk1lc2g9bmV3
IHIuTWVzaCgiX19yb290X18iLHRoaXMuX2JhYnlsb25TY2VuZSksdGhpcy5fcm9vdEJhYnlsb25N
ZXNoLnNldEVuYWJsZWQoITEpO3ZhciB0PXtfYmFieWxvblRyYW5zZm9ybU5vZGU6dGhpcy5fcm9v
dEJhYnlsb25NZXNoLGluZGV4Oi0xfTtzd2l0Y2godGhpcy5fcGFyZW50LmNvb3JkaW5hdGVTeXN0
ZW1Nb2RlKXtjYXNlIG8uR0xURkxvYWRlckNvb3JkaW5hdGVTeXN0ZW1Nb2RlLkFVVE86dGhpcy5f
YmFieWxvblNjZW5lLnVzZVJpZ2h0SGFuZGVkU3lzdGVtfHwodC5yb3RhdGlvbj1bMCwxLDAsMF0s
dC5zY2FsZT1bMSwxLC0xXSxlLl9Mb2FkVHJhbnNmb3JtKHQsdGhpcy5fcm9vdEJhYnlsb25NZXNo
KSk7YnJlYWs7Y2FzZSBvLkdMVEZMb2FkZXJDb29yZGluYXRlU3lzdGVtTW9kZS5GT1JDRV9SSUdI
VF9IQU5ERUQ6dGhpcy5fYmFieWxvblNjZW5lLnVzZVJpZ2h0SGFuZGVkU3lzdGVtPSEwO2JyZWFr
O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvb3JkaW5hdGUgc3lzdGVtIG1vZGUg
KCIrdGhpcy5fcGFyZW50LmNvb3JkaW5hdGVTeXN0ZW1Nb2RlKyIpIil9cmV0dXJuIHRoaXMuX3Bh
cmVudC5vbk1lc2hMb2FkZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyh0aGlzLl9yb290QmFi
eWxvbk1lc2gpLHR9LGUucHJvdG90eXBlLmxvYWRTY2VuZUFzeW5jPWZ1bmN0aW9uKGUsdCl7dmFy
IG49dGhpcyxyPXRoaXMuX2V4dGVuc2lvbnNMb2FkU2NlbmVBc3luYyhlLHQpO2lmKHIpcmV0dXJu
IHI7dmFyIG89bmV3IEFycmF5O2lmKHRoaXMubG9nT3BlbihlKyIgIisodC5uYW1lfHwiIikpLHQu
bm9kZXMpZm9yKHZhciBpPTAscz10Lm5vZGVzO2k8cy5sZW5ndGg7aSsrKXt2YXIgbD1zW2ldLHU9
YS5HZXQoZSsiL25vZGVzLyIrbCx0aGlzLl9nbHRmLm5vZGVzLGwpO28ucHVzaCh0aGlzLmxvYWRO
b2RlQXN5bmMoIi9ub2Rlcy8iK3UuaW5kZXgsdSxmdW5jdGlvbihlKXtlLnBhcmVudD1uLl9yb290
QmFieWxvbk1lc2h9KSl9aWYodGhpcy5fZ2x0Zi5ub2Rlcylmb3IodmFyIGM9MCxmPXRoaXMuX2ds
dGYubm9kZXM7YzxmLmxlbmd0aDtjKyspe2lmKCh1PWZbY10pLl9iYWJ5bG9uVHJhbnNmb3JtTm9k
ZSYmdS5fYmFieWxvbkJvbmVzKWZvcih2YXIgZD0wLGg9dS5fYmFieWxvbkJvbmVzO2Q8aC5sZW5n
dGg7ZCsrKXtoW2RdLmxpbmtUcmFuc2Zvcm1Ob2RlKHUuX2JhYnlsb25UcmFuc2Zvcm1Ob2RlKX19
cmV0dXJuIG8ucHVzaCh0aGlzLl9sb2FkQW5pbWF0aW9uc0FzeW5jKCkpLHRoaXMubG9nQ2xvc2Uo
KSxQcm9taXNlLmFsbChvKS50aGVuKGZ1bmN0aW9uKCl7fSl9LGUucHJvdG90eXBlLl9mb3JFYWNo
UHJpbWl0aXZlPWZ1bmN0aW9uKGUsdCl7aWYoZS5fcHJpbWl0aXZlQmFieWxvbk1lc2hlcylmb3Io
dmFyIG49MCxyPWUuX3ByaW1pdGl2ZUJhYnlsb25NZXNoZXM7bjxyLmxlbmd0aDtuKyspe3Qocltu
XSl9fSxlLnByb3RvdHlwZS5fZ2V0TWVzaGVzPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IEFycmF5O2Uu
cHVzaCh0aGlzLl9yb290QmFieWxvbk1lc2gpO3ZhciB0PXRoaXMuX2dsdGYubm9kZXM7aWYodClm
b3IodmFyIG49MCxyPXQ7bjxyLmxlbmd0aDtuKyspe3ZhciBvPXJbbl07dGhpcy5fZm9yRWFjaFBy
aW1pdGl2ZShvLGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0pfXJldHVybiBlfSxlLnByb3RvdHlwZS5f
Z2V0U2tlbGV0b25zPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IEFycmF5LHQ9dGhpcy5fZ2x0Zi5za2lu
cztpZih0KWZvcih2YXIgbj0wLHI9dDtuPHIubGVuZ3RoO24rKyl7dmFyIG89cltuXTtvLl9kYXRh
JiZlLnB1c2goby5fZGF0YS5iYWJ5bG9uU2tlbGV0b24pfXJldHVybiBlfSxlLnByb3RvdHlwZS5f
Z2V0QW5pbWF0aW9uR3JvdXBzPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IEFycmF5LHQ9dGhpcy5fZ2x0
Zi5hbmltYXRpb25zO2lmKHQpZm9yKHZhciBuPTAscj10O248ci5sZW5ndGg7bisrKXt2YXIgbz1y
W25dO28uX2JhYnlsb25BbmltYXRpb25Hcm91cCYmZS5wdXNoKG8uX2JhYnlsb25BbmltYXRpb25H
cm91cCl9cmV0dXJuIGV9LGUucHJvdG90eXBlLl9zdGFydEFuaW1hdGlvbnM9ZnVuY3Rpb24oKXtz
d2l0Y2godGhpcy5fcGFyZW50LmFuaW1hdGlvblN0YXJ0TW9kZSl7Y2FzZSBvLkdMVEZMb2FkZXJB
bmltYXRpb25TdGFydE1vZGUuTk9ORTpicmVhaztjYXNlIG8uR0xURkxvYWRlckFuaW1hdGlvblN0
YXJ0TW9kZS5GSVJTVDowIT09KGU9dGhpcy5fZ2V0QW5pbWF0aW9uR3JvdXBzKCkpLmxlbmd0aCYm
ZVswXS5zdGFydCghMCk7YnJlYWs7Y2FzZSBvLkdMVEZMb2FkZXJBbmltYXRpb25TdGFydE1vZGUu
QUxMOmZvcih2YXIgZSx0PTAsbj1lPXRoaXMuX2dldEFuaW1hdGlvbkdyb3VwcygpO3Q8bi5sZW5n
dGg7dCsrKXtuW3RdLnN0YXJ0KCEwKX1icmVhaztkZWZhdWx0OnJldHVybiB2b2lkIHIuTG9nZ2Vy
LkVycm9yKCJJbnZhbGlkIGFuaW1hdGlvbiBzdGFydCBtb2RlICgiK3RoaXMuX3BhcmVudC5hbmlt
YXRpb25TdGFydE1vZGUrIikiKX19LGUucHJvdG90eXBlLmxvYWROb2RlQXN5bmM9ZnVuY3Rpb24o
dCxuLG8pe3ZhciBpPXRoaXM7dm9pZCAwPT09byYmKG89ZnVuY3Rpb24oKXt9KTt2YXIgcz10aGlz
Ll9leHRlbnNpb25zTG9hZE5vZGVBc3luYyh0LG4sbyk7aWYocylyZXR1cm4gcztpZihuLl9iYWJ5
bG9uVHJhbnNmb3JtTm9kZSl0aHJvdyBuZXcgRXJyb3IodCsiOiBJbnZhbGlkIHJlY3Vyc2l2ZSBu
b2RlIGhpZXJhcmNoeSIpO3ZhciBsPW5ldyBBcnJheTt0aGlzLmxvZ09wZW4odCsiICIrKG4ubmFt
ZXx8IiIpKTt2YXIgdT1mdW5jdGlvbihyKXtpZihlLkFkZFBvaW50ZXJNZXRhZGF0YShyLHQpLGUu
X0xvYWRUcmFuc2Zvcm0obixyKSxudWxsIT1uLmNhbWVyYSl7dmFyIHM9YS5HZXQodCsiL2NhbWVy
YSIsaS5fZ2x0Zi5jYW1lcmFzLG4uY2FtZXJhKTtsLnB1c2goaS5sb2FkQ2FtZXJhQXN5bmMoIi9j
YW1lcmFzLyIrcy5pbmRleCxzLGZ1bmN0aW9uKGUpe2UucGFyZW50PXJ9KSl9aWYobi5jaGlsZHJl
bilmb3IodmFyIHU9MCxjPW4uY2hpbGRyZW47dTxjLmxlbmd0aDt1Kyspe3ZhciBmPWNbdV0sZD1h
LkdldCh0KyIvY2hpbGRyZW4vIitmLGkuX2dsdGYubm9kZXMsZik7bC5wdXNoKGkubG9hZE5vZGVB
c3luYygiL25vZGVzLyIrZC5pbmRleCxkLGZ1bmN0aW9uKGUpe2UucGFyZW50PXJ9KSl9byhyKX07
aWYobnVsbD09bi5tZXNoKXt2YXIgYz1uLm5hbWV8fCJub2RlIituLmluZGV4O24uX2JhYnlsb25U
cmFuc2Zvcm1Ob2RlPW5ldyByLlRyYW5zZm9ybU5vZGUoYyx0aGlzLl9iYWJ5bG9uU2NlbmUpLHUo
bi5fYmFieWxvblRyYW5zZm9ybU5vZGUpfWVsc2V7dmFyIGY9YS5HZXQodCsiL21lc2giLHRoaXMu
X2dsdGYubWVzaGVzLG4ubWVzaCk7bC5wdXNoKHRoaXMuX2xvYWRNZXNoQXN5bmMoIi9tZXNoZXMv
IitmLmluZGV4LG4sZix1KSl9cmV0dXJuIHRoaXMubG9nQ2xvc2UoKSxQcm9taXNlLmFsbChsKS50
aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGkuX2ZvckVhY2hQcmltaXRpdmUobixmdW5jdGlvbihlKXtl
LnJlZnJlc2hCb3VuZGluZ0luZm8oITApfSksbi5fYmFieWxvblRyYW5zZm9ybU5vZGV9KX0sZS5w
cm90b3R5cGUuX2xvYWRNZXNoQXN5bmM9ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGk9bi5wcmltaXRp
dmVzO2lmKCFpfHwhaS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGUrIjogUHJpbWl0aXZlcyBhcmUg
bWlzc2luZyIpO251bGw9PWlbMF0uaW5kZXgmJmEuQXNzaWduKGkpO3ZhciBzPW5ldyBBcnJheTt0
aGlzLmxvZ09wZW4oZSsiICIrKG4ubmFtZXx8IiIpKTt2YXIgbD10Lm5hbWV8fCJub2RlIit0Lmlu
ZGV4O2lmKDE9PT1pLmxlbmd0aCl7dmFyIHU9bi5wcmltaXRpdmVzWzBdO3MucHVzaCh0aGlzLl9s
b2FkTWVzaFByaW1pdGl2ZUFzeW5jKGUrIi9wcmltaXRpdmVzLyIrdS5pbmRleCxsLHQsbix1LGZ1
bmN0aW9uKGUpe3QuX2JhYnlsb25UcmFuc2Zvcm1Ob2RlPWUsdC5fcHJpbWl0aXZlQmFieWxvbk1l
c2hlcz1bZV19KSl9ZWxzZXt0Ll9iYWJ5bG9uVHJhbnNmb3JtTm9kZT1uZXcgci5UcmFuc2Zvcm1O
b2RlKGwsdGhpcy5fYmFieWxvblNjZW5lKSx0Ll9wcmltaXRpdmVCYWJ5bG9uTWVzaGVzPVtdO2Zv
cih2YXIgYz0wLGY9aTtjPGYubGVuZ3RoO2MrKyl7dT1mW2NdO3MucHVzaCh0aGlzLl9sb2FkTWVz
aFByaW1pdGl2ZUFzeW5jKGUrIi9wcmltaXRpdmVzLyIrdS5pbmRleCxsKyJfcHJpbWl0aXZlIit1
LmluZGV4LHQsbix1LGZ1bmN0aW9uKGUpe2UucGFyZW50PXQuX2JhYnlsb25UcmFuc2Zvcm1Ob2Rl
LHQuX3ByaW1pdGl2ZUJhYnlsb25NZXNoZXMucHVzaChlKX0pKX19aWYobnVsbCE9dC5za2luKXt2
YXIgZD1hLkdldChlKyIvc2tpbiIsdGhpcy5fZ2x0Zi5za2lucyx0LnNraW4pO3MucHVzaCh0aGlz
Ll9sb2FkU2tpbkFzeW5jKCIvc2tpbnMvIitkLmluZGV4LHQsZCkpfXJldHVybiBvKHQuX2JhYnls
b25UcmFuc2Zvcm1Ob2RlKSx0aGlzLmxvZ0Nsb3NlKCksUHJvbWlzZS5hbGwocykudGhlbihmdW5j
dGlvbigpe3JldHVybiB0Ll9iYWJ5bG9uVHJhbnNmb3JtTm9kZX0pfSxlLnByb3RvdHlwZS5fbG9h
ZE1lc2hQcmltaXRpdmVBc3luYz1mdW5jdGlvbih0LG4sbyxpLHMsbCl7dmFyIHU9dGhpcyxjPXRo
aXMuX2V4dGVuc2lvbnNMb2FkTWVzaFByaW1pdGl2ZUFzeW5jKHQsbixvLGkscyxsKTtpZihjKXJl
dHVybiBjO3RoaXMubG9nT3BlbigiIit0KTt2YXIgZixkLGg9dGhpcy5fcGFyZW50LmNyZWF0ZUlu
c3RhbmNlcyYmbnVsbD09by5za2luJiYhaS5wcmltaXRpdmVzWzBdLnRhcmdldHM7aWYoaCYmcy5f
aW5zdGFuY2VEYXRhKWY9cy5faW5zdGFuY2VEYXRhLmJhYnlsb25Tb3VyY2VNZXNoLmNyZWF0ZUlu
c3RhbmNlKG4pLGQ9cy5faW5zdGFuY2VEYXRhLnByb21pc2U7ZWxzZXt2YXIgcD1uZXcgQXJyYXks
bT1uZXcgci5NZXNoKG4sdGhpcy5fYmFieWxvblNjZW5lKTttLm92ZXJyaWRlTWF0ZXJpYWxTaWRl
T3JpZW50YXRpb249dGhpcy5fYmFieWxvblNjZW5lLnVzZVJpZ2h0SGFuZGVkU3lzdGVtP3IuTWF0
ZXJpYWwuQ291bnRlckNsb2NrV2lzZVNpZGVPcmllbnRhdGlvbjpyLk1hdGVyaWFsLkNsb2NrV2lz
ZVNpZGVPcmllbnRhdGlvbix0aGlzLl9jcmVhdGVNb3JwaFRhcmdldHModCxvLGkscyxtKSxwLnB1
c2godGhpcy5fbG9hZFZlcnRleERhdGFBc3luYyh0LHMsbSkudGhlbihmdW5jdGlvbihlKXtyZXR1
cm4gdS5fbG9hZE1vcnBoVGFyZ2V0c0FzeW5jKHQscyxtLGUpLnRoZW4oZnVuY3Rpb24oKXtlLmFw
cGx5VG9NZXNoKG0pfSl9KSk7dmFyIF89ZS5fR2V0RHJhd01vZGUodCxzLm1vZGUpO2lmKG51bGw9
PXMubWF0ZXJpYWwpe3ZhciB5PXRoaXMuX2RlZmF1bHRCYWJ5bG9uTWF0ZXJpYWxEYXRhW19dO3l8
fCh5PXRoaXMuX2NyZWF0ZURlZmF1bHRNYXRlcmlhbCgiX19HTFRGTG9hZGVyLl9kZWZhdWx0Iixf
KSx0aGlzLl9wYXJlbnQub25NYXRlcmlhbExvYWRlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJz
KHkpLHRoaXMuX2RlZmF1bHRCYWJ5bG9uTWF0ZXJpYWxEYXRhW19dPXkpLG0ubWF0ZXJpYWw9eX1l
bHNle3ZhciB2PWEuR2V0KHQrIi9tYXRlcmlhbCIsdGhpcy5fZ2x0Zi5tYXRlcmlhbHMscy5tYXRl
cmlhbCk7cC5wdXNoKHRoaXMuX2xvYWRNYXRlcmlhbEFzeW5jKCIvbWF0ZXJpYWxzLyIrdi5pbmRl
eCx2LG0sXyxmdW5jdGlvbihlKXttLm1hdGVyaWFsPWV9KSl9ZD1Qcm9taXNlLmFsbChwKSxoJiYo
cy5faW5zdGFuY2VEYXRhPXtiYWJ5bG9uU291cmNlTWVzaDptLHByb21pc2U6ZH0pLGY9bX1yZXR1
cm4gZS5BZGRQb2ludGVyTWV0YWRhdGEoZix0KSx0aGlzLl9wYXJlbnQub25NZXNoTG9hZGVkT2Jz
ZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMoZiksbChmKSx0aGlzLmxvZ0Nsb3NlKCksZC50aGVuKGZ1
bmN0aW9uKCl7cmV0dXJuIGZ9KX0sZS5wcm90b3R5cGUuX2xvYWRWZXJ0ZXhEYXRhQXN5bmM9ZnVu
Y3Rpb24oZSx0LG4pe3ZhciBvPXRoaXMsaT10aGlzLl9leHRlbnNpb25zTG9hZFZlcnRleERhdGFB
c3luYyhlLHQsbik7aWYoaSlyZXR1cm4gaTt2YXIgcz10LmF0dHJpYnV0ZXM7aWYoIXMpdGhyb3cg
bmV3IEVycm9yKGUrIjogQXR0cmlidXRlcyBhcmUgbWlzc2luZyIpO3ZhciBsPW5ldyBBcnJheSx1
PW5ldyByLkdlb21ldHJ5KG4ubmFtZSx0aGlzLl9iYWJ5bG9uU2NlbmUpO2lmKG51bGw9PXQuaW5k
aWNlcyluLmlzVW5JbmRleGVkPSEwO2Vsc2V7dmFyIGM9YS5HZXQoZSsiL2luZGljZXMiLHRoaXMu
X2dsdGYuYWNjZXNzb3JzLHQuaW5kaWNlcyk7bC5wdXNoKHRoaXMuX2xvYWRJbmRpY2VzQWNjZXNz
b3JBc3luYygiL2FjY2Vzc29ycy8iK2MuaW5kZXgsYykudGhlbihmdW5jdGlvbihlKXt1LnNldElu
ZGljZXMoZSl9KSl9dmFyIGY9ZnVuY3Rpb24odCxyLGkpe2lmKG51bGwhPXNbdF0pe24uX2RlbGF5
SW5mbz1uLl9kZWxheUluZm98fFtdLC0xPT09bi5fZGVsYXlJbmZvLmluZGV4T2YocikmJm4uX2Rl
bGF5SW5mby5wdXNoKHIpO3ZhciBjPWEuR2V0KGUrIi9hdHRyaWJ1dGVzLyIrdCxvLl9nbHRmLmFj
Y2Vzc29ycyxzW3RdKTtsLnB1c2goby5fbG9hZFZlcnRleEFjY2Vzc29yQXN5bmMoIi9hY2Nlc3Nv
cnMvIitjLmluZGV4LGMscikudGhlbihmdW5jdGlvbihlKXt1LnNldFZlcnRpY2VzQnVmZmVyKGUs
Yy5jb3VudCl9KSksaSYmaShjKX19O3JldHVybiBmKCJQT1NJVElPTiIsci5WZXJ0ZXhCdWZmZXIu
UG9zaXRpb25LaW5kKSxmKCJOT1JNQUwiLHIuVmVydGV4QnVmZmVyLk5vcm1hbEtpbmQpLGYoIlRB
TkdFTlQiLHIuVmVydGV4QnVmZmVyLlRhbmdlbnRLaW5kKSxmKCJURVhDT09SRF8wIixyLlZlcnRl
eEJ1ZmZlci5VVktpbmQpLGYoIlRFWENPT1JEXzEiLHIuVmVydGV4QnVmZmVyLlVWMktpbmQpLGYo
IkpPSU5UU18wIixyLlZlcnRleEJ1ZmZlci5NYXRyaWNlc0luZGljZXNLaW5kKSxmKCJXRUlHSFRT
XzAiLHIuVmVydGV4QnVmZmVyLk1hdHJpY2VzV2VpZ2h0c0tpbmQpLGYoIkNPTE9SXzAiLHIuVmVy
dGV4QnVmZmVyLkNvbG9yS2luZCxmdW5jdGlvbihlKXsiVkVDNCI9PT1lLnR5cGUmJihuLmhhc1Zl
cnRleEFscGhhPSEwKX0pLFByb21pc2UuYWxsKGwpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdX0p
fSxlLnByb3RvdHlwZS5fY3JlYXRlTW9ycGhUYXJnZXRzPWZ1bmN0aW9uKGUsdCxuLG8sYSl7aWYo
by50YXJnZXRzKXtpZihudWxsPT10Ll9udW1Nb3JwaFRhcmdldHMpdC5fbnVtTW9ycGhUYXJnZXRz
PW8udGFyZ2V0cy5sZW5ndGg7ZWxzZSBpZihvLnRhcmdldHMubGVuZ3RoIT09dC5fbnVtTW9ycGhU
YXJnZXRzKXRocm93IG5ldyBFcnJvcihlKyI6IFByaW1pdGl2ZXMgZG8gbm90IGhhdmUgdGhlIHNh
bWUgbnVtYmVyIG9mIHRhcmdldHMiKTt2YXIgaT1uLmV4dHJhcz9uLmV4dHJhcy50YXJnZXROYW1l
czpudWxsO2EubW9ycGhUYXJnZXRNYW5hZ2VyPW5ldyByLk1vcnBoVGFyZ2V0TWFuYWdlcihhLmdl
dFNjZW5lKCkpO2Zvcih2YXIgcz0wO3M8by50YXJnZXRzLmxlbmd0aDtzKyspe3ZhciBsPXQud2Vp
Z2h0cz90LndlaWdodHNbc106bi53ZWlnaHRzP24ud2VpZ2h0c1tzXTowLHU9aT9pW3NdOiJtb3Jw
aFRhcmdldCIrczthLm1vcnBoVGFyZ2V0TWFuYWdlci5hZGRUYXJnZXQobmV3IHIuTW9ycGhUYXJn
ZXQodSxsLGEuZ2V0U2NlbmUoKSkpfX19LGUucHJvdG90eXBlLl9sb2FkTW9ycGhUYXJnZXRzQXN5
bmM9ZnVuY3Rpb24oZSx0LG4scil7aWYoIXQudGFyZ2V0cylyZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7Zm9yKHZhciBvPW5ldyBBcnJheSxhPW4ubW9ycGhUYXJnZXRNYW5hZ2VyLGk9MDtpPGEubnVt
VGFyZ2V0cztpKyspe3ZhciBzPWEuZ2V0VGFyZ2V0KGkpO28ucHVzaCh0aGlzLl9sb2FkTW9ycGhU
YXJnZXRWZXJ0ZXhEYXRhQXN5bmMoZSsiL3RhcmdldHMvIitpLHIsdC50YXJnZXRzW2ldLHMpKX1y
ZXR1cm4gUHJvbWlzZS5hbGwobykudGhlbihmdW5jdGlvbigpe30pfSxlLnByb3RvdHlwZS5fbG9h
ZE1vcnBoVGFyZ2V0VmVydGV4RGF0YUFzeW5jPWZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpPXRoaXMs
cz1uZXcgQXJyYXksbD1mdW5jdGlvbihyLG8sbCl7aWYobnVsbCE9bltyXSl7dmFyIHU9dC5nZXRW
ZXJ0ZXhCdWZmZXIobyk7aWYodSl7dmFyIGM9YS5HZXQoZSsiLyIrcixpLl9nbHRmLmFjY2Vzc29y
cyxuW3JdKTtzLnB1c2goaS5fbG9hZEZsb2F0QWNjZXNzb3JBc3luYygiL2FjY2Vzc29ycy8iK2Mu
aW5kZXgsYykudGhlbihmdW5jdGlvbihlKXtsKHUsZSl9KSl9fX07cmV0dXJuIGwoIlBPU0lUSU9O
IixyLlZlcnRleEJ1ZmZlci5Qb3NpdGlvbktpbmQsZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgRmxv
YXQzMkFycmF5KHQubGVuZ3RoKTtlLmZvckVhY2godC5sZW5ndGgsZnVuY3Rpb24oZSxyKXtuW3Jd
PXRbcl0rZX0pLG8uc2V0UG9zaXRpb25zKG4pfSksbCgiTk9STUFMIixyLlZlcnRleEJ1ZmZlci5O
b3JtYWxLaW5kLGZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCk7
ZS5mb3JFYWNoKG4ubGVuZ3RoLGZ1bmN0aW9uKGUscil7bltyXT10W3JdK2V9KSxvLnNldE5vcm1h
bHMobil9KSxsKCJUQU5HRU5UIixyLlZlcnRleEJ1ZmZlci5UYW5nZW50S2luZCxmdW5jdGlvbihl
LHQpe3ZhciBuPW5ldyBGbG9hdDMyQXJyYXkodC5sZW5ndGgvMyo0KSxyPTA7ZS5mb3JFYWNoKHQu
bGVuZ3RoLzMqNCxmdW5jdGlvbihlLG8peyhvKzEpJTQhPTAmJihuW3JdPXRbcl0rZSxyKyspfSks
by5zZXRUYW5nZW50cyhuKX0pLFByb21pc2UuYWxsKHMpLnRoZW4oZnVuY3Rpb24oKXt9KX0sZS5f
TG9hZFRyYW5zZm9ybT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUuc2tpbil7dmFyIG49ci5WZWN0
b3IzLlplcm8oKSxvPXIuUXVhdGVybmlvbi5JZGVudGl0eSgpLGE9ci5WZWN0b3IzLk9uZSgpO2lm
KGUubWF0cml4KXIuTWF0cml4LkZyb21BcnJheShlLm1hdHJpeCkuZGVjb21wb3NlKGEsbyxuKTtl
bHNlIGUudHJhbnNsYXRpb24mJihuPXIuVmVjdG9yMy5Gcm9tQXJyYXkoZS50cmFuc2xhdGlvbikp
LGUucm90YXRpb24mJihvPXIuUXVhdGVybmlvbi5Gcm9tQXJyYXkoZS5yb3RhdGlvbikpLGUuc2Nh
bGUmJihhPXIuVmVjdG9yMy5Gcm9tQXJyYXkoZS5zY2FsZSkpO3QucG9zaXRpb249bix0LnJvdGF0
aW9uUXVhdGVybmlvbj1vLHQuc2NhbGluZz1hfX0sZS5wcm90b3R5cGUuX2xvYWRTa2luQXN5bmM9
ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXRoaXMsYT10aGlzLl9leHRlbnNpb25zTG9hZFNraW5Bc3lu
YyhlLHQsbik7aWYoYSlyZXR1cm4gYTt2YXIgaT1mdW5jdGlvbihlKXtvLl9mb3JFYWNoUHJpbWl0
aXZlKHQsZnVuY3Rpb24odCl7dC5za2VsZXRvbj1lfSl9O2lmKG4uX2RhdGEpcmV0dXJuIGkobi5f
ZGF0YS5iYWJ5bG9uU2tlbGV0b24pLG4uX2RhdGEucHJvbWlzZTt2YXIgcz0ic2tlbGV0b24iK24u
aW5kZXgsbD1uZXcgci5Ta2VsZXRvbihuLm5hbWV8fHMscyx0aGlzLl9iYWJ5bG9uU2NlbmUpO2wu
b3ZlcnJpZGVNZXNoPXRoaXMuX3Jvb3RCYWJ5bG9uTWVzaCx0aGlzLl9sb2FkQm9uZXMoZSxuLGwp
LGkobCk7dmFyIHU9dGhpcy5fbG9hZFNraW5JbnZlcnNlQmluZE1hdHJpY2VzRGF0YUFzeW5jKGUs
bikudGhlbihmdW5jdGlvbihlKXtvLl91cGRhdGVCb25lTWF0cmljZXMobCxlKX0pO3JldHVybiBu
Ll9kYXRhPXtiYWJ5bG9uU2tlbGV0b246bCxwcm9taXNlOnV9LHV9LGUucHJvdG90eXBlLl9sb2Fk
Qm9uZXM9ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj17fSxvPTAsaT10LmpvaW50cztvPGkubGVu
Z3RoO28rKyl7dmFyIHM9aVtvXSxsPWEuR2V0KGUrIi9qb2ludHMvIitzLHRoaXMuX2dsdGYubm9k
ZXMscyk7dGhpcy5fbG9hZEJvbmUobCx0LG4scil9fSxlLnByb3RvdHlwZS5fbG9hZEJvbmU9ZnVu
Y3Rpb24oZSx0LG4sbyl7dmFyIGE9b1tlLmluZGV4XTtpZihhKXJldHVybiBhO3ZhciBpPW51bGw7
ZS5wYXJlbnQmJmUucGFyZW50Ll9iYWJ5bG9uVHJhbnNmb3JtTm9kZSE9PXRoaXMuX3Jvb3RCYWJ5
bG9uTWVzaCYmKGk9dGhpcy5fbG9hZEJvbmUoZS5wYXJlbnQsdCxuLG8pKTt2YXIgcz10LmpvaW50
cy5pbmRleE9mKGUuaW5kZXgpO3JldHVybiBhPW5ldyByLkJvbmUoZS5uYW1lfHwiam9pbnQiK2Uu
aW5kZXgsbixpLHRoaXMuX2dldE5vZGVNYXRyaXgoZSksbnVsbCxudWxsLHMpLG9bZS5pbmRleF09
YSxlLl9iYWJ5bG9uQm9uZXM9ZS5fYmFieWxvbkJvbmVzfHxbXSxlLl9iYWJ5bG9uQm9uZXMucHVz
aChhKSxhfSxlLnByb3RvdHlwZS5fbG9hZFNraW5JbnZlcnNlQmluZE1hdHJpY2VzRGF0YUFzeW5j
PWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09dC5pbnZlcnNlQmluZE1hdHJpY2VzKXJldHVybiBQcm9t
aXNlLnJlc29sdmUobnVsbCk7dmFyIG49YS5HZXQoZSsiL2ludmVyc2VCaW5kTWF0cmljZXMiLHRo
aXMuX2dsdGYuYWNjZXNzb3JzLHQuaW52ZXJzZUJpbmRNYXRyaWNlcyk7cmV0dXJuIHRoaXMuX2xv
YWRGbG9hdEFjY2Vzc29yQXN5bmMoIi9hY2Nlc3NvcnMvIituLmluZGV4LG4pfSxlLnByb3RvdHlw
ZS5fdXBkYXRlQm9uZU1hdHJpY2VzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAsbz1lLmJvbmVz
O248by5sZW5ndGg7bisrKXt2YXIgYT1vW25dLGk9ci5NYXRyaXguSWRlbnRpdHkoKSxzPWEuX2lu
ZGV4O3QmJi0xIT09cyYmKHIuTWF0cml4LkZyb21BcnJheVRvUmVmKHQsMTYqcyxpKSxpLmludmVy
dFRvUmVmKGkpKTt2YXIgbD1hLmdldFBhcmVudCgpO2wmJmkubXVsdGlwbHlUb1JlZihsLmdldElu
dmVydGVkQWJzb2x1dGVUcmFuc2Zvcm0oKSxpKSxhLnVwZGF0ZU1hdHJpeChpLCExLCExKSxhLl91
cGRhdGVEaWZmZXJlbmNlTWF0cml4KHZvaWQgMCwhMSl9fSxlLnByb3RvdHlwZS5fZ2V0Tm9kZU1h
dHJpeD1mdW5jdGlvbihlKXtyZXR1cm4gZS5tYXRyaXg/ci5NYXRyaXguRnJvbUFycmF5KGUubWF0
cml4KTpyLk1hdHJpeC5Db21wb3NlKGUuc2NhbGU/ci5WZWN0b3IzLkZyb21BcnJheShlLnNjYWxl
KTpyLlZlY3RvcjMuT25lKCksZS5yb3RhdGlvbj9yLlF1YXRlcm5pb24uRnJvbUFycmF5KGUucm90
YXRpb24pOnIuUXVhdGVybmlvbi5JZGVudGl0eSgpLGUudHJhbnNsYXRpb24/ci5WZWN0b3IzLkZy
b21BcnJheShlLnRyYW5zbGF0aW9uKTpyLlZlY3RvcjMuWmVybygpKX0sZS5wcm90b3R5cGUubG9h
ZENhbWVyYUFzeW5jPWZ1bmN0aW9uKHQsbixvKXt2b2lkIDA9PT1vJiYobz1mdW5jdGlvbigpe30p
O3ZhciBhPXRoaXMuX2V4dGVuc2lvbnNMb2FkQ2FtZXJhQXN5bmModCxuLG8pO2lmKGEpcmV0dXJu
IGE7dmFyIGk9bmV3IEFycmF5O3RoaXMubG9nT3Blbih0KyIgIisobi5uYW1lfHwiIikpO3ZhciBz
PW5ldyByLkZyZWVDYW1lcmEobi5uYW1lfHwiY2FtZXJhIituLmluZGV4LHIuVmVjdG9yMy5aZXJv
KCksdGhpcy5fYmFieWxvblNjZW5lLCExKTtzd2l0Y2gocy5yb3RhdGlvbj1uZXcgci5WZWN0b3Iz
KDAsTWF0aC5QSSwwKSxuLnR5cGUpe2Nhc2UicGVyc3BlY3RpdmUiOnZhciBsPW4ucGVyc3BlY3Rp
dmU7aWYoIWwpdGhyb3cgbmV3IEVycm9yKHQrIjogQ2FtZXJhIHBlcnNwZWN0aXZlIHByb3BlcnRp
ZXMgYXJlIG1pc3NpbmciKTtzLmZvdj1sLnlmb3Yscy5taW5aPWwuem5lYXIscy5tYXhaPWwuemZh
cnx8TnVtYmVyLk1BWF9WQUxVRTticmVhaztjYXNlIm9ydGhvZ3JhcGhpYyI6aWYoIW4ub3J0aG9n
cmFwaGljKXRocm93IG5ldyBFcnJvcih0KyI6IENhbWVyYSBvcnRob2dyYXBoaWMgcHJvcGVydGll
cyBhcmUgbWlzc2luZyIpO3MubW9kZT1yLkNhbWVyYS5PUlRIT0dSQVBISUNfQ0FNRVJBLHMub3J0
aG9MZWZ0PS1uLm9ydGhvZ3JhcGhpYy54bWFnLHMub3J0aG9SaWdodD1uLm9ydGhvZ3JhcGhpYy54
bWFnLHMub3J0aG9Cb3R0b209LW4ub3J0aG9ncmFwaGljLnltYWcscy5vcnRob1RvcD1uLm9ydGhv
Z3JhcGhpYy55bWFnLHMubWluWj1uLm9ydGhvZ3JhcGhpYy56bmVhcixzLm1heFo9bi5vcnRob2dy
YXBoaWMuemZhcjticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcih0KyI6IEludmFsaWQgY2Ft
ZXJhIHR5cGUgKCIrbi50eXBlKyIpIil9cmV0dXJuIGUuQWRkUG9pbnRlck1ldGFkYXRhKHMsdCks
dGhpcy5fcGFyZW50Lm9uQ2FtZXJhTG9hZGVkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMocyks
byhzKSxQcm9taXNlLmFsbChpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHN9KX0sZS5wcm90b3R5
cGUuX2xvYWRBbmltYXRpb25zQXN5bmM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9nbHRmLmFuaW1h
dGlvbnM7aWYoIWUpcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO2Zvcih2YXIgdD1uZXcgQXJyYXks
bj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3QucHVzaCh0aGlzLmxvYWRBbmltYXRpb25B
c3luYygiL2FuaW1hdGlvbnMvIityLmluZGV4LHIpKX1yZXR1cm4gUHJvbWlzZS5hbGwodCkudGhl
bihmdW5jdGlvbigpe30pfSxlLnByb3RvdHlwZS5sb2FkQW5pbWF0aW9uQXN5bmM9ZnVuY3Rpb24o
ZSx0KXt2YXIgbj10aGlzLl9leHRlbnNpb25zTG9hZEFuaW1hdGlvbkFzeW5jKGUsdCk7aWYobily
ZXR1cm4gbjt2YXIgbz1uZXcgci5BbmltYXRpb25Hcm91cCh0Lm5hbWV8fCJhbmltYXRpb24iK3Qu
aW5kZXgsdGhpcy5fYmFieWxvblNjZW5lKTt0Ll9iYWJ5bG9uQW5pbWF0aW9uR3JvdXA9bzt2YXIg
aT1uZXcgQXJyYXk7YS5Bc3NpZ24odC5jaGFubmVscyksYS5Bc3NpZ24odC5zYW1wbGVycyk7Zm9y
KHZhciBzPTAsbD10LmNoYW5uZWxzO3M8bC5sZW5ndGg7cysrKXt2YXIgdT1sW3NdO2kucHVzaCh0
aGlzLl9sb2FkQW5pbWF0aW9uQ2hhbm5lbEFzeW5jKGUrIi9jaGFubmVscy8iK3UuaW5kZXgsZSx0
LHUsbykpfXJldHVybiBQcm9taXNlLmFsbChpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG8ubm9y
bWFsaXplKDApLG99KX0sZS5wcm90b3R5cGUuX2xvYWRBbmltYXRpb25DaGFubmVsQXN5bmM9ZnVu
Y3Rpb24oZSx0LG4sbyxpLHMpe3ZhciBsPXRoaXM7aWYodm9pZCAwPT09cyYmKHM9bnVsbCksbnVs
bD09by50YXJnZXQubm9kZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7dmFyIHU9YS5HZXQoZSsi
L3RhcmdldC9ub2RlIix0aGlzLl9nbHRmLm5vZGVzLG8udGFyZ2V0Lm5vZGUpO2lmKCJ3ZWlnaHRz
Ij09PW8udGFyZ2V0LnBhdGgmJiF1Ll9udW1Nb3JwaFRhcmdldHN8fCJ3ZWlnaHRzIiE9PW8udGFy
Z2V0LnBhdGgmJiF1Ll9iYWJ5bG9uVHJhbnNmb3JtTm9kZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7dmFyIGM9YS5HZXQoZSsiL3NhbXBsZXIiLG4uc2FtcGxlcnMsby5zYW1wbGVyKTtyZXR1cm4g
dGhpcy5fbG9hZEFuaW1hdGlvblNhbXBsZXJBc3luYyh0KyIvc2FtcGxlcnMvIitvLnNhbXBsZXIs
YykudGhlbihmdW5jdGlvbih0KXt2YXIgbixhO3N3aXRjaChvLnRhcmdldC5wYXRoKXtjYXNlInRy
YW5zbGF0aW9uIjpuPSJwb3NpdGlvbiIsYT1yLkFuaW1hdGlvbi5BTklNQVRJT05UWVBFX1ZFQ1RP
UjM7YnJlYWs7Y2FzZSJyb3RhdGlvbiI6bj0icm90YXRpb25RdWF0ZXJuaW9uIixhPXIuQW5pbWF0
aW9uLkFOSU1BVElPTlRZUEVfUVVBVEVSTklPTjticmVhaztjYXNlInNjYWxlIjpuPSJzY2FsaW5n
IixhPXIuQW5pbWF0aW9uLkFOSU1BVElPTlRZUEVfVkVDVE9SMzticmVhaztjYXNlIndlaWdodHMi
Om49ImluZmx1ZW5jZSIsYT1yLkFuaW1hdGlvbi5BTklNQVRJT05UWVBFX0ZMT0FUO2JyZWFrO2Rl
ZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGUrIi90YXJnZXQvcGF0aDogSW52YWxpZCB2YWx1ZSAoIitv
LnRhcmdldC5wYXRoKyIpIil9dmFyIGMsZixkPTA7c3dpdGNoKG4pe2Nhc2UicG9zaXRpb24iOmM9
ZnVuY3Rpb24oKXt2YXIgZT1yLlZlY3RvcjMuRnJvbUFycmF5KHQub3V0cHV0LGQpO3JldHVybiBk
Kz0zLGV9O2JyZWFrO2Nhc2Uicm90YXRpb25RdWF0ZXJuaW9uIjpjPWZ1bmN0aW9uKCl7dmFyIGU9
ci5RdWF0ZXJuaW9uLkZyb21BcnJheSh0Lm91dHB1dCxkKTtyZXR1cm4gZCs9NCxlfTticmVhaztj
YXNlInNjYWxpbmciOmM9ZnVuY3Rpb24oKXt2YXIgZT1yLlZlY3RvcjMuRnJvbUFycmF5KHQub3V0
cHV0LGQpO3JldHVybiBkKz0zLGV9O2JyZWFrO2Nhc2UiaW5mbHVlbmNlIjpjPWZ1bmN0aW9uKCl7
Zm9yKHZhciBlPW5ldyBBcnJheSh1Ll9udW1Nb3JwaFRhcmdldHMpLG49MDtuPHUuX251bU1vcnBo
VGFyZ2V0cztuKyspZVtuXT10Lm91dHB1dFtkKytdO3JldHVybiBlfX1zd2l0Y2godC5pbnRlcnBv
bGF0aW9uKXtjYXNlIlNURVAiOmY9ZnVuY3Rpb24oZSl7cmV0dXJue2ZyYW1lOnQuaW5wdXRbZV0s
dmFsdWU6YygpLGludGVycG9sYXRpb246ci5BbmltYXRpb25LZXlJbnRlcnBvbGF0aW9uLlNURVB9
fTticmVhaztjYXNlIkxJTkVBUiI6Zj1mdW5jdGlvbihlKXtyZXR1cm57ZnJhbWU6dC5pbnB1dFtl
XSx2YWx1ZTpjKCl9fTticmVhaztjYXNlIkNVQklDU1BMSU5FIjpmPWZ1bmN0aW9uKGUpe3JldHVy
bntmcmFtZTp0LmlucHV0W2VdLGluVGFuZ2VudDpjKCksdmFsdWU6YygpLG91dFRhbmdlbnQ6Yygp
fX19Zm9yKHZhciBoPW5ldyBBcnJheSh0LmlucHV0Lmxlbmd0aCkscD0wO3A8dC5pbnB1dC5sZW5n
dGg7cCsrKWhbcF09ZihwKTtpZigiaW5mbHVlbmNlIj09PW4pZm9yKHZhciBtPWZ1bmN0aW9uKGUp
e3ZhciB0PWkubmFtZSsiX2NoYW5uZWwiK2kudGFyZ2V0ZWRBbmltYXRpb25zLmxlbmd0aCxvPW5l
dyByLkFuaW1hdGlvbih0LG4sMSxhKTtvLnNldEtleXMoaC5tYXAoZnVuY3Rpb24odCl7cmV0dXJu
e2ZyYW1lOnQuZnJhbWUsaW5UYW5nZW50OnQuaW5UYW5nZW50P3QuaW5UYW5nZW50W2VdOnZvaWQg
MCx2YWx1ZTp0LnZhbHVlW2VdLG91dFRhbmdlbnQ6dC5vdXRUYW5nZW50P3Qub3V0VGFuZ2VudFtl
XTp2b2lkIDB9fSkpLGwuX2ZvckVhY2hQcmltaXRpdmUodSxmdW5jdGlvbih0KXt2YXIgbj10Lm1v
cnBoVGFyZ2V0TWFuYWdlci5nZXRUYXJnZXQoZSkscj1vLmNsb25lKCk7bi5hbmltYXRpb25zLnB1
c2gociksaS5hZGRUYXJnZXRlZEFuaW1hdGlvbihyLG4pfSl9LF89MDtfPHUuX251bU1vcnBoVGFy
Z2V0cztfKyspbShfKTtlbHNle3ZhciB5PWkubmFtZSsiX2NoYW5uZWwiK2kudGFyZ2V0ZWRBbmlt
YXRpb25zLmxlbmd0aCx2PW5ldyByLkFuaW1hdGlvbih5LG4sMSxhKTt2LnNldEtleXMoaCksbnVs
bCE9cyYmbnVsbCE9cy5hbmltYXRpb25zPyhzLmFuaW1hdGlvbnMucHVzaCh2KSxpLmFkZFRhcmdl
dGVkQW5pbWF0aW9uKHYscykpOih1Ll9iYWJ5bG9uVHJhbnNmb3JtTm9kZS5hbmltYXRpb25zLnB1
c2godiksaS5hZGRUYXJnZXRlZEFuaW1hdGlvbih2LHUuX2JhYnlsb25UcmFuc2Zvcm1Ob2RlKSl9
fSl9LGUucHJvdG90eXBlLl9sb2FkQW5pbWF0aW9uU2FtcGxlckFzeW5jPWZ1bmN0aW9uKGUsdCl7
aWYodC5fZGF0YSlyZXR1cm4gdC5fZGF0YTt2YXIgbj10LmludGVycG9sYXRpb258fCJMSU5FQVIi
O3N3aXRjaChuKXtjYXNlIlNURVAiOmNhc2UiTElORUFSIjpjYXNlIkNVQklDU1BMSU5FIjpicmVh
aztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihlKyIvaW50ZXJwb2xhdGlvbjogSW52YWxpZCB2YWx1
ZSAoIit0LmludGVycG9sYXRpb24rIikiKX12YXIgcj1hLkdldChlKyIvaW5wdXQiLHRoaXMuX2ds
dGYuYWNjZXNzb3JzLHQuaW5wdXQpLG89YS5HZXQoZSsiL291dHB1dCIsdGhpcy5fZ2x0Zi5hY2Nl
c3NvcnMsdC5vdXRwdXQpO3JldHVybiB0Ll9kYXRhPVByb21pc2UuYWxsKFt0aGlzLl9sb2FkRmxv
YXRBY2Nlc3NvckFzeW5jKCIvYWNjZXNzb3JzLyIrci5pbmRleCxyKSx0aGlzLl9sb2FkRmxvYXRB
Y2Nlc3NvckFzeW5jKCIvYWNjZXNzb3JzLyIrby5pbmRleCxvKV0pLnRoZW4oZnVuY3Rpb24oZSl7
dmFyIHQ9ZVswXSxyPWVbMV07cmV0dXJue2lucHV0OnQsaW50ZXJwb2xhdGlvbjpuLG91dHB1dDpy
fX0pLHQuX2RhdGF9LGUucHJvdG90eXBlLl9sb2FkQnVmZmVyQXN5bmM9ZnVuY3Rpb24oZSx0LG4s
cil7dmFyIG89dGhpcy5fZXh0ZW5zaW9uc0xvYWRCdWZmZXJBc3luYyhlLHQsbixyKTtpZihvKXJl
dHVybiBvO2lmKCF0Ll9kYXRhKWlmKHQudXJpKXQuX2RhdGE9dGhpcy5sb2FkVXJpQXN5bmMoZSsi
L3VyaSIsdCx0LnVyaSk7ZWxzZXtpZighdGhpcy5fYmluKXRocm93IG5ldyBFcnJvcihlKyI6IFVy
aSBpcyBtaXNzaW5nIG9yIHRoZSBiaW5hcnkgZ2xURiBpcyBtaXNzaW5nIGl0cyBiaW5hcnkgY2h1
bmsiKTt0Ll9kYXRhPXRoaXMuX2Jpbi5yZWFkQXN5bmMoMCx0LmJ5dGVMZW5ndGgpfXJldHVybiB0
Ll9kYXRhLnRoZW4oZnVuY3Rpb24odCl7dHJ5e3JldHVybiBuZXcgVWludDhBcnJheSh0LmJ1ZmZl
cix0LmJ5dGVPZmZzZXQrbixyKX1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoZSsiOiAiK3QubWVz
c2FnZSl9fSl9LGUucHJvdG90eXBlLmxvYWRCdWZmZXJWaWV3QXN5bmM9ZnVuY3Rpb24oZSx0KXt2
YXIgbj10aGlzLl9leHRlbnNpb25zTG9hZEJ1ZmZlclZpZXdBc3luYyhlLHQpO2lmKG4pcmV0dXJu
IG47aWYodC5fZGF0YSlyZXR1cm4gdC5fZGF0YTt2YXIgcj1hLkdldChlKyIvYnVmZmVyIix0aGlz
Ll9nbHRmLmJ1ZmZlcnMsdC5idWZmZXIpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2xvYWRCdWZmZXJB
c3luYygiL2J1ZmZlcnMvIityLmluZGV4LHIsdC5ieXRlT2Zmc2V0fHwwLHQuYnl0ZUxlbmd0aCks
dC5fZGF0YX0sZS5wcm90b3R5cGUuX2xvYWRBY2Nlc3NvckFzeW5jPWZ1bmN0aW9uKHQsbixvKXt2
YXIgaT10aGlzO2lmKG4uX2RhdGEpcmV0dXJuIG4uX2RhdGE7dmFyIHM9ZS5fR2V0TnVtQ29tcG9u
ZW50cyh0LG4udHlwZSksbD1zKnIuVmVydGV4QnVmZmVyLkdldFR5cGVCeXRlTGVuZ3RoKG4uY29t
cG9uZW50VHlwZSksdT1zKm4uY291bnQ7aWYobnVsbD09bi5idWZmZXJWaWV3KW4uX2RhdGE9UHJv
bWlzZS5yZXNvbHZlKG5ldyBvKHUpKTtlbHNle3ZhciBjPWEuR2V0KHQrIi9idWZmZXJWaWV3Iix0
aGlzLl9nbHRmLmJ1ZmZlclZpZXdzLG4uYnVmZmVyVmlldyk7bi5fZGF0YT10aGlzLmxvYWRCdWZm
ZXJWaWV3QXN5bmMoIi9idWZmZXJWaWV3cy8iK2MuaW5kZXgsYykudGhlbihmdW5jdGlvbihhKXtp
Zig1MTI2IT09bi5jb21wb25lbnRUeXBlfHxuLm5vcm1hbGl6ZWQpe3ZhciBpPW5ldyBvKHUpO3Jl
dHVybiByLlZlcnRleEJ1ZmZlci5Gb3JFYWNoKGEsbi5ieXRlT2Zmc2V0fHwwLGMuYnl0ZVN0cmlk
ZXx8bCxzLG4uY29tcG9uZW50VHlwZSxpLmxlbmd0aCxuLm5vcm1hbGl6ZWR8fCExLGZ1bmN0aW9u
KGUsdCl7aVt0XT1lfSksaX1yZXR1cm4gZS5fR2V0VHlwZWRBcnJheSh0LG4uY29tcG9uZW50VHlw
ZSxhLG4uYnl0ZU9mZnNldCx1KX0pfWlmKG4uc3BhcnNlKXt2YXIgZj1uLnNwYXJzZTtuLl9kYXRh
PW4uX2RhdGEudGhlbihmdW5jdGlvbih1KXt2YXIgYz11LGQ9YS5HZXQodCsiL3NwYXJzZS9pbmRp
Y2VzL2J1ZmZlclZpZXciLGkuX2dsdGYuYnVmZmVyVmlld3MsZi5pbmRpY2VzLmJ1ZmZlclZpZXcp
LGg9YS5HZXQodCsiL3NwYXJzZS92YWx1ZXMvYnVmZmVyVmlldyIsaS5fZ2x0Zi5idWZmZXJWaWV3
cyxmLnZhbHVlcy5idWZmZXJWaWV3KTtyZXR1cm4gUHJvbWlzZS5hbGwoW2kubG9hZEJ1ZmZlclZp
ZXdBc3luYygiL2J1ZmZlclZpZXdzLyIrZC5pbmRleCxkKSxpLmxvYWRCdWZmZXJWaWV3QXN5bmMo
Ii9idWZmZXJWaWV3cy8iK2guaW5kZXgsaCldKS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBpLHU9YVsw
XSxkPWFbMV0saD1lLl9HZXRUeXBlZEFycmF5KHQrIi9zcGFyc2UvaW5kaWNlcyIsZi5pbmRpY2Vz
LmNvbXBvbmVudFR5cGUsdSxmLmluZGljZXMuYnl0ZU9mZnNldCxmLmNvdW50KSxwPXMqZi5jb3Vu
dDtpZig1MTI2IT09bi5jb21wb25lbnRUeXBlfHxuLm5vcm1hbGl6ZWQpe3ZhciBtPWUuX0dldFR5
cGVkQXJyYXkodCsiL3NwYXJzZS92YWx1ZXMiLG4uY29tcG9uZW50VHlwZSxkLGYudmFsdWVzLmJ5
dGVPZmZzZXQscCk7aT1uZXcgbyhwKSxyLlZlcnRleEJ1ZmZlci5Gb3JFYWNoKG0sMCxsLHMsbi5j
b21wb25lbnRUeXBlLGkubGVuZ3RoLG4ubm9ybWFsaXplZHx8ITEsZnVuY3Rpb24oZSx0KXtpW3Rd
PWV9KX1lbHNlIGk9ZS5fR2V0VHlwZWRBcnJheSh0KyIvc3BhcnNlL3ZhbHVlcyIsbi5jb21wb25l
bnRUeXBlLGQsZi52YWx1ZXMuYnl0ZU9mZnNldCxwKTtmb3IodmFyIF89MCx5PTA7eTxoLmxlbmd0
aDt5KyspZm9yKHZhciB2PWhbeV0qcyxBPTA7QTxzO0ErKyljW3YrK109aVtfKytdO3JldHVybiBj
fSl9KX1yZXR1cm4gbi5fZGF0YX0sZS5wcm90b3R5cGUuX2xvYWRGbG9hdEFjY2Vzc29yQXN5bmM9
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fbG9hZEFjY2Vzc29yQXN5bmMoZSx0LEZsb2F0MzJB
cnJheSl9LGUucHJvdG90eXBlLl9sb2FkSW5kaWNlc0FjY2Vzc29yQXN5bmM9ZnVuY3Rpb24odCxu
KXtpZigiU0NBTEFSIiE9PW4udHlwZSl0aHJvdyBuZXcgRXJyb3IodCsiL3R5cGU6IEludmFsaWQg
dmFsdWUgIituLnR5cGUpO2lmKDUxMjEhPT1uLmNvbXBvbmVudFR5cGUmJjUxMjMhPT1uLmNvbXBv
bmVudFR5cGUmJjUxMjUhPT1uLmNvbXBvbmVudFR5cGUpdGhyb3cgbmV3IEVycm9yKHQrIi9jb21w
b25lbnRUeXBlOiBJbnZhbGlkIHZhbHVlICIrbi5jb21wb25lbnRUeXBlKTtpZihuLl9kYXRhKXJl
dHVybiBuLl9kYXRhO2lmKG4uc3BhcnNlKXt2YXIgcj1lLl9HZXRUeXBlZEFycmF5Q29uc3RydWN0
b3IodCsiL2NvbXBvbmVudFR5cGUiLG4uY29tcG9uZW50VHlwZSk7bi5fZGF0YT10aGlzLl9sb2Fk
QWNjZXNzb3JBc3luYyh0LG4scil9ZWxzZXt2YXIgbz1hLkdldCh0KyIvYnVmZmVyVmlldyIsdGhp
cy5fZ2x0Zi5idWZmZXJWaWV3cyxuLmJ1ZmZlclZpZXcpO24uX2RhdGE9dGhpcy5sb2FkQnVmZmVy
Vmlld0FzeW5jKCIvYnVmZmVyVmlld3MvIitvLmluZGV4LG8pLnRoZW4oZnVuY3Rpb24ocil7cmV0
dXJuIGUuX0dldFR5cGVkQXJyYXkodCxuLmNvbXBvbmVudFR5cGUscixuLmJ5dGVPZmZzZXQsbi5j
b3VudCl9KX1yZXR1cm4gbi5fZGF0YX0sZS5wcm90b3R5cGUuX2xvYWRWZXJ0ZXhCdWZmZXJWaWV3
QXN5bmM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiBlLl9iYWJ5bG9uQnVmZmVyP2Uu
X2JhYnlsb25CdWZmZXI6KGUuX2JhYnlsb25CdWZmZXI9dGhpcy5sb2FkQnVmZmVyVmlld0FzeW5j
KCIvYnVmZmVyVmlld3MvIitlLmluZGV4LGUpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBy
LkJ1ZmZlcihuLl9iYWJ5bG9uU2NlbmUuZ2V0RW5naW5lKCksZSwhMSl9KSxlLl9iYWJ5bG9uQnVm
ZmVyKX0sZS5wcm90b3R5cGUuX2xvYWRWZXJ0ZXhBY2Nlc3NvckFzeW5jPWZ1bmN0aW9uKHQsbixv
KXt2YXIgaT10aGlzO2lmKG4uX2JhYnlsb25WZXJ0ZXhCdWZmZXIpcmV0dXJuIG4uX2JhYnlsb25W
ZXJ0ZXhCdWZmZXI7aWYobi5zcGFyc2Upbi5fYmFieWxvblZlcnRleEJ1ZmZlcj10aGlzLl9sb2Fk
RmxvYXRBY2Nlc3NvckFzeW5jKCIvYWNjZXNzb3JzLyIrbi5pbmRleCxuKS50aGVuKGZ1bmN0aW9u
KGUpe3JldHVybiBuZXcgci5WZXJ0ZXhCdWZmZXIoaS5fYmFieWxvblNjZW5lLmdldEVuZ2luZSgp
LGUsbywhMSl9KTtlbHNlIGlmKG4uYnl0ZU9mZnNldCYmbi5ieXRlT2Zmc2V0JXIuVmVydGV4QnVm
ZmVyLkdldFR5cGVCeXRlTGVuZ3RoKG4uY29tcG9uZW50VHlwZSkhPTApci5Mb2dnZXIuV2Fybigi
QWNjZXNzb3IgYnl0ZSBvZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgY29tcG9uZW50IHR5cGUg
Ynl0ZSBsZW5ndGgiKSxuLl9iYWJ5bG9uVmVydGV4QnVmZmVyPXRoaXMuX2xvYWRGbG9hdEFjY2Vz
c29yQXN5bmMoIi9hY2Nlc3NvcnMvIituLmluZGV4LG4pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJu
IG5ldyByLlZlcnRleEJ1ZmZlcihpLl9iYWJ5bG9uU2NlbmUuZ2V0RW5naW5lKCksZSxvLCExKX0p
O2Vsc2UgaWYobz09PXIuVmVydGV4QnVmZmVyLk1hdHJpY2VzSW5kaWNlc0tpbmQpbi5fYmFieWxv
blZlcnRleEJ1ZmZlcj10aGlzLl9sb2FkRmxvYXRBY2Nlc3NvckFzeW5jKCIvYWNjZXNzb3JzLyIr
bi5pbmRleCxuKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgci5WZXJ0ZXhCdWZmZXIoaS5f
YmFieWxvblNjZW5lLmdldEVuZ2luZSgpLGUsbywhMSl9KTtlbHNle3ZhciBzPWEuR2V0KHQrIi9i
dWZmZXJWaWV3Iix0aGlzLl9nbHRmLmJ1ZmZlclZpZXdzLG4uYnVmZmVyVmlldyk7bi5fYmFieWxv
blZlcnRleEJ1ZmZlcj10aGlzLl9sb2FkVmVydGV4QnVmZmVyVmlld0FzeW5jKHMsbykudGhlbihm
dW5jdGlvbihhKXt2YXIgbD1lLl9HZXROdW1Db21wb25lbnRzKHQsbi50eXBlKTtyZXR1cm4gbmV3
IHIuVmVydGV4QnVmZmVyKGkuX2JhYnlsb25TY2VuZS5nZXRFbmdpbmUoKSxhLG8sITEsITEscy5i
eXRlU3RyaWRlLCExLG4uYnl0ZU9mZnNldCxsLG4uY29tcG9uZW50VHlwZSxuLm5vcm1hbGl6ZWQs
ITApfSl9cmV0dXJuIG4uX2JhYnlsb25WZXJ0ZXhCdWZmZXJ9LGUucHJvdG90eXBlLl9sb2FkTWF0
ZXJpYWxNZXRhbGxpY1JvdWdobmVzc1Byb3BlcnRpZXNBc3luYz1mdW5jdGlvbihlLHQsbil7aWYo
IShuIGluc3RhbmNlb2Ygci5QQlJNYXRlcmlhbCkpdGhyb3cgbmV3IEVycm9yKGUrIjogTWF0ZXJp
YWwgdHlwZSBub3Qgc3VwcG9ydGVkIik7dmFyIG89bmV3IEFycmF5O3JldHVybiB0JiYodC5iYXNl
Q29sb3JGYWN0b3I/KG4uYWxiZWRvQ29sb3I9ci5Db2xvcjMuRnJvbUFycmF5KHQuYmFzZUNvbG9y
RmFjdG9yKSxuLmFscGhhPXQuYmFzZUNvbG9yRmFjdG9yWzNdKTpuLmFsYmVkb0NvbG9yPXIuQ29s
b3IzLldoaXRlKCksbi5tZXRhbGxpYz1udWxsPT10Lm1ldGFsbGljRmFjdG9yPzE6dC5tZXRhbGxp
Y0ZhY3RvcixuLnJvdWdobmVzcz1udWxsPT10LnJvdWdobmVzc0ZhY3Rvcj8xOnQucm91Z2huZXNz
RmFjdG9yLHQuYmFzZUNvbG9yVGV4dHVyZSYmby5wdXNoKHRoaXMubG9hZFRleHR1cmVJbmZvQXN5
bmMoZSsiL2Jhc2VDb2xvclRleHR1cmUiLHQuYmFzZUNvbG9yVGV4dHVyZSxmdW5jdGlvbihlKXtl
Lm5hbWU9bi5uYW1lKyIgKEJhc2UgQ29sb3IpIixuLmFsYmVkb1RleHR1cmU9ZX0pKSx0Lm1ldGFs
bGljUm91Z2huZXNzVGV4dHVyZSYmKG8ucHVzaCh0aGlzLmxvYWRUZXh0dXJlSW5mb0FzeW5jKGUr
Ii9tZXRhbGxpY1JvdWdobmVzc1RleHR1cmUiLHQubWV0YWxsaWNSb3VnaG5lc3NUZXh0dXJlLGZ1
bmN0aW9uKGUpe2UubmFtZT1uLm5hbWUrIiAoTWV0YWxsaWMgUm91Z2huZXNzKSIsbi5tZXRhbGxp
Y1RleHR1cmU9ZX0pKSxuLnVzZU1ldGFsbG5lc3NGcm9tTWV0YWxsaWNUZXh0dXJlQmx1ZT0hMCxu
LnVzZVJvdWdobmVzc0Zyb21NZXRhbGxpY1RleHR1cmVHcmVlbj0hMCxuLnVzZVJvdWdobmVzc0Zy
b21NZXRhbGxpY1RleHR1cmVBbHBoYT0hMSkpLFByb21pc2UuYWxsKG8pLnRoZW4oZnVuY3Rpb24o
KXt9KX0sZS5wcm90b3R5cGUuX2xvYWRNYXRlcmlhbEFzeW5jPWZ1bmN0aW9uKHQsbixyLG8sYSl7
dm9pZCAwPT09YSYmKGE9ZnVuY3Rpb24oKXt9KTt2YXIgaT10aGlzLl9leHRlbnNpb25zTG9hZE1h
dGVyaWFsQXN5bmModCxuLHIsbyxhKTtpZihpKXJldHVybiBpO24uX2RhdGE9bi5fZGF0YXx8e307
dmFyIHM9bi5fZGF0YVtvXTtpZighcyl7dGhpcy5sb2dPcGVuKHQrIiAiKyhuLm5hbWV8fCIiKSk7
dmFyIGw9dGhpcy5jcmVhdGVNYXRlcmlhbCh0LG4sbyk7cz17YmFieWxvbk1hdGVyaWFsOmwsYmFi
eWxvbk1lc2hlczpbXSxwcm9taXNlOnRoaXMubG9hZE1hdGVyaWFsUHJvcGVydGllc0FzeW5jKHQs
bixsKX0sbi5fZGF0YVtvXT1zLGUuQWRkUG9pbnRlck1ldGFkYXRhKGwsdCksdGhpcy5fcGFyZW50
Lm9uTWF0ZXJpYWxMb2FkZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyhsKSx0aGlzLmxvZ0Ns
b3NlKCl9cmV0dXJuIHMuYmFieWxvbk1lc2hlcy5wdXNoKHIpLHIub25EaXNwb3NlT2JzZXJ2YWJs
ZS5hZGRPbmNlKGZ1bmN0aW9uKCl7dmFyIGU9cy5iYWJ5bG9uTWVzaGVzLmluZGV4T2Yocik7LTEh
PT1lJiZzLmJhYnlsb25NZXNoZXMuc3BsaWNlKGUsMSl9KSxhKHMuYmFieWxvbk1hdGVyaWFsKSxz
LnByb21pc2UudGhlbihmdW5jdGlvbigpe3JldHVybiBzLmJhYnlsb25NYXRlcmlhbH0pfSxlLnBy
b3RvdHlwZS5fY3JlYXRlRGVmYXVsdE1hdGVyaWFsPWZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IHIu
UEJSTWF0ZXJpYWwoZSx0aGlzLl9iYWJ5bG9uU2NlbmUpO3JldHVybiBuLmZpbGxNb2RlPXQsbi5l
bmFibGVTcGVjdWxhckFudGlBbGlhc2luZz0hMCxuLnVzZVJhZGlhbmNlT3ZlckFscGhhPSF0aGlz
Ll9wYXJlbnQudHJhbnNwYXJlbmN5QXNDb3ZlcmFnZSxuLnVzZVNwZWN1bGFyT3ZlckFscGhhPSF0
aGlzLl9wYXJlbnQudHJhbnNwYXJlbmN5QXNDb3ZlcmFnZSxuLnRyYW5zcGFyZW5jeU1vZGU9ci5Q
QlJNYXRlcmlhbC5QQlJNQVRFUklBTF9PUEFRVUUsbi5tZXRhbGxpYz0xLG4ucm91Z2huZXNzPTEs
bn0sZS5wcm90b3R5cGUuY3JlYXRlTWF0ZXJpYWw9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMu
X2V4dGVuc2lvbnNDcmVhdGVNYXRlcmlhbChlLHQsbik7aWYocilyZXR1cm4gcjt2YXIgbz10Lm5h
bWV8fCJtYXRlcmlhbCIrdC5pbmRleDtyZXR1cm4gdGhpcy5fY3JlYXRlRGVmYXVsdE1hdGVyaWFs
KG8sbil9LGUucHJvdG90eXBlLmxvYWRNYXRlcmlhbFByb3BlcnRpZXNBc3luYz1mdW5jdGlvbihl
LHQsbil7dmFyIHI9dGhpcy5fZXh0ZW5zaW9uc0xvYWRNYXRlcmlhbFByb3BlcnRpZXNBc3luYyhl
LHQsbik7aWYocilyZXR1cm4gcjt2YXIgbz1uZXcgQXJyYXk7cmV0dXJuIG8ucHVzaCh0aGlzLmxv
YWRNYXRlcmlhbEJhc2VQcm9wZXJ0aWVzQXN5bmMoZSx0LG4pKSx0LnBick1ldGFsbGljUm91Z2hu
ZXNzJiZvLnB1c2godGhpcy5fbG9hZE1hdGVyaWFsTWV0YWxsaWNSb3VnaG5lc3NQcm9wZXJ0aWVz
QXN5bmMoZSsiL3Bick1ldGFsbGljUm91Z2huZXNzIix0LnBick1ldGFsbGljUm91Z2huZXNzLG4p
KSx0aGlzLmxvYWRNYXRlcmlhbEFscGhhUHJvcGVydGllcyhlLHQsbiksUHJvbWlzZS5hbGwobyku
dGhlbihmdW5jdGlvbigpe30pfSxlLnByb3RvdHlwZS5sb2FkTWF0ZXJpYWxCYXNlUHJvcGVydGll
c0FzeW5jPWZ1bmN0aW9uKGUsdCxuKXtpZighKG4gaW5zdGFuY2VvZiByLlBCUk1hdGVyaWFsKSl0
aHJvdyBuZXcgRXJyb3IoZSsiOiBNYXRlcmlhbCB0eXBlIG5vdCBzdXBwb3J0ZWQiKTt2YXIgbz1u
ZXcgQXJyYXk7cmV0dXJuIG4uZW1pc3NpdmVDb2xvcj10LmVtaXNzaXZlRmFjdG9yP3IuQ29sb3Iz
LkZyb21BcnJheSh0LmVtaXNzaXZlRmFjdG9yKTpuZXcgci5Db2xvcjMoMCwwLDApLHQuZG91Ymxl
U2lkZWQmJihuLmJhY2tGYWNlQ3VsbGluZz0hMSxuLnR3b1NpZGVkTGlnaHRpbmc9ITApLHQubm9y
bWFsVGV4dHVyZSYmKG8ucHVzaCh0aGlzLmxvYWRUZXh0dXJlSW5mb0FzeW5jKGUrIi9ub3JtYWxU
ZXh0dXJlIix0Lm5vcm1hbFRleHR1cmUsZnVuY3Rpb24oZSl7ZS5uYW1lPW4ubmFtZSsiIChOb3Jt
YWwpIixuLmJ1bXBUZXh0dXJlPWV9KSksbi5pbnZlcnROb3JtYWxNYXBYPSF0aGlzLl9iYWJ5bG9u
U2NlbmUudXNlUmlnaHRIYW5kZWRTeXN0ZW0sbi5pbnZlcnROb3JtYWxNYXBZPXRoaXMuX2JhYnls
b25TY2VuZS51c2VSaWdodEhhbmRlZFN5c3RlbSxudWxsIT10Lm5vcm1hbFRleHR1cmUuc2NhbGUm
JihuLmJ1bXBUZXh0dXJlLmxldmVsPXQubm9ybWFsVGV4dHVyZS5zY2FsZSksbi5mb3JjZUlycmFk
aWFuY2VJbkZyYWdtZW50PSEwKSx0Lm9jY2x1c2lvblRleHR1cmUmJihvLnB1c2godGhpcy5sb2Fk
VGV4dHVyZUluZm9Bc3luYyhlKyIvb2NjbHVzaW9uVGV4dHVyZSIsdC5vY2NsdXNpb25UZXh0dXJl
LGZ1bmN0aW9uKGUpe2UubmFtZT1uLm5hbWUrIiAoT2NjbHVzaW9uKSIsbi5hbWJpZW50VGV4dHVy
ZT1lfSkpLG4udXNlQW1iaWVudEluR3JheVNjYWxlPSEwLG51bGwhPXQub2NjbHVzaW9uVGV4dHVy
ZS5zdHJlbmd0aCYmKG4uYW1iaWVudFRleHR1cmVTdHJlbmd0aD10Lm9jY2x1c2lvblRleHR1cmUu
c3RyZW5ndGgpKSx0LmVtaXNzaXZlVGV4dHVyZSYmby5wdXNoKHRoaXMubG9hZFRleHR1cmVJbmZv
QXN5bmMoZSsiL2VtaXNzaXZlVGV4dHVyZSIsdC5lbWlzc2l2ZVRleHR1cmUsZnVuY3Rpb24oZSl7
ZS5uYW1lPW4ubmFtZSsiIChFbWlzc2l2ZSkiLG4uZW1pc3NpdmVUZXh0dXJlPWV9KSksUHJvbWlz
ZS5hbGwobykudGhlbihmdW5jdGlvbigpe30pfSxlLnByb3RvdHlwZS5sb2FkTWF0ZXJpYWxBbHBo
YVByb3BlcnRpZXM9ZnVuY3Rpb24oZSx0LG4pe2lmKCEobiBpbnN0YW5jZW9mIHIuUEJSTWF0ZXJp
YWwpKXRocm93IG5ldyBFcnJvcihlKyI6IE1hdGVyaWFsIHR5cGUgbm90IHN1cHBvcnRlZCIpO3N3
aXRjaCh0LmFscGhhTW9kZXx8Ik9QQVFVRSIpe2Nhc2UiT1BBUVVFIjpuLnRyYW5zcGFyZW5jeU1v
ZGU9ci5QQlJNYXRlcmlhbC5QQlJNQVRFUklBTF9PUEFRVUU7YnJlYWs7Y2FzZSJNQVNLIjpuLnRy
YW5zcGFyZW5jeU1vZGU9ci5QQlJNYXRlcmlhbC5QQlJNQVRFUklBTF9BTFBIQVRFU1Qsbi5hbHBo
YUN1dE9mZj1udWxsPT10LmFscGhhQ3V0b2ZmPy41OnQuYWxwaGFDdXRvZmYsbi5hbGJlZG9UZXh0
dXJlJiYobi5hbGJlZG9UZXh0dXJlLmhhc0FscGhhPSEwKTticmVhaztjYXNlIkJMRU5EIjpuLnRy
YW5zcGFyZW5jeU1vZGU9ci5QQlJNYXRlcmlhbC5QQlJNQVRFUklBTF9BTFBIQUJMRU5ELG4uYWxi
ZWRvVGV4dHVyZSYmKG4uYWxiZWRvVGV4dHVyZS5oYXNBbHBoYT0hMCxuLnVzZUFscGhhRnJvbUFs
YmVkb1RleHR1cmU9ITApO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGUrIi9hbHBoYU1v
ZGU6IEludmFsaWQgdmFsdWUgKCIrdC5hbHBoYU1vZGUrIikiKX19LGUucHJvdG90eXBlLmxvYWRU
ZXh0dXJlSW5mb0FzeW5jPWZ1bmN0aW9uKHQsbixyKXt2YXIgbz10aGlzO3ZvaWQgMD09PXImJihy
PWZ1bmN0aW9uKCl7fSk7dmFyIGk9dGhpcy5fZXh0ZW5zaW9uc0xvYWRUZXh0dXJlSW5mb0FzeW5j
KHQsbixyKTtpZihpKXJldHVybiBpO2lmKHRoaXMubG9nT3BlbigiIit0KSxuLnRleENvb3JkPj0y
KXRocm93IG5ldyBFcnJvcih0KyIvdGV4Q29vcmQ6IEludmFsaWQgdmFsdWUgKCIrbi50ZXhDb29y
ZCsiKSIpO3ZhciBzPWEuR2V0KHQrIi9pbmRleCIsdGhpcy5fZ2x0Zi50ZXh0dXJlcyxuLmluZGV4
KSxsPXRoaXMuX2xvYWRUZXh0dXJlQXN5bmMoIi90ZXh0dXJlcy8iK24uaW5kZXgscyxmdW5jdGlv
bihhKXthLmNvb3JkaW5hdGVzSW5kZXg9bi50ZXhDb29yZHx8MCxlLkFkZFBvaW50ZXJNZXRhZGF0
YShhLHQpLG8uX3BhcmVudC5vblRleHR1cmVMb2FkZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVy
cyhhKSxyKGEpfSk7cmV0dXJuIHRoaXMubG9nQ2xvc2UoKSxsfSxlLnByb3RvdHlwZS5fbG9hZFRl
eHR1cmVBc3luYz1mdW5jdGlvbih0LG4sbyl7dmFyIGk9dGhpczt2b2lkIDA9PT1vJiYobz1mdW5j
dGlvbigpe30pO3ZhciBzPW5ldyBBcnJheTt0aGlzLmxvZ09wZW4odCsiICIrKG4ubmFtZXx8IiIp
KTt2YXIgbD1udWxsPT1uLnNhbXBsZXI/ZS5fRGVmYXVsdFNhbXBsZXI6YS5HZXQodCsiL3NhbXBs
ZXIiLHRoaXMuX2dsdGYuc2FtcGxlcnMsbi5zYW1wbGVyKSx1PXRoaXMuX2xvYWRTYW1wbGVyKCIv
c2FtcGxlcnMvIitsLmluZGV4LGwpLGM9YS5HZXQodCsiL3NvdXJjZSIsdGhpcy5fZ2x0Zi5pbWFn
ZXMsbi5zb3VyY2UpLGY9bnVsbDtjLnVyaSYmKHIuVG9vbHMuSXNCYXNlNjQoYy51cmkpP2Y9Yy51
cmk6dGhpcy5fYmFieWxvblNjZW5lLmdldEVuZ2luZSgpLnRleHR1cmVGb3JtYXRJblVzZSYmKGY9
dGhpcy5fcm9vdFVybCtjLnVyaSkpO3ZhciBkPW5ldyByLkRlZmVycmVkLGg9bmV3IHIuVGV4dHVy
ZShmLHRoaXMuX2JhYnlsb25TY2VuZSx1Lm5vTWlwTWFwcywhMSx1LnNhbXBsaW5nTW9kZSxmdW5j
dGlvbigpe2kuX2Rpc3Bvc2VkfHxkLnJlc29sdmUoKX0sZnVuY3Rpb24oZSxuKXtpLl9kaXNwb3Nl
ZHx8ZC5yZWplY3QobmV3IEVycm9yKHQrIjogIisobiYmbi5tZXNzYWdlP24ubWVzc2FnZTplfHwi
RmFpbGVkIHRvIGxvYWQgdGV4dHVyZSIpKSl9LHZvaWQgMCx2b2lkIDAsdm9pZCAwLGMubWltZVR5
cGUpO3JldHVybiBzLnB1c2goZC5wcm9taXNlKSxmfHxzLnB1c2godGhpcy5sb2FkSW1hZ2VBc3lu
YygiL2ltYWdlcy8iK2MuaW5kZXgsYykudGhlbihmdW5jdGlvbihlKXt2YXIgdD1jLnVyaXx8aS5f
ZmlsZU5hbWUrIiNpbWFnZSIrYy5pbmRleCxuPSJkYXRhOiIraS5fdW5pcXVlUm9vdFVybCt0O2gu
dXBkYXRlVVJMKG4sZSl9KSksaC53cmFwVT11LndyYXBVLGgud3JhcFY9dS53cmFwVixvKGgpLHRo
aXMubG9nQ2xvc2UoKSxQcm9taXNlLmFsbChzKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KX0s
ZS5wcm90b3R5cGUuX2xvYWRTYW1wbGVyPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG4uX2RhdGF8fChu
Ll9kYXRhPXtub01pcE1hcHM6OTcyOD09PW4ubWluRmlsdGVyfHw5NzI5PT09bi5taW5GaWx0ZXIs
c2FtcGxpbmdNb2RlOmUuX0dldFRleHR1cmVTYW1wbGluZ01vZGUodCxuKSx3cmFwVTplLl9HZXRU
ZXh0dXJlV3JhcE1vZGUodCsiL3dyYXBTIixuLndyYXBTKSx3cmFwVjplLl9HZXRUZXh0dXJlV3Jh
cE1vZGUodCsiL3dyYXBUIixuLndyYXBUKX0pLG4uX2RhdGF9LGUucHJvdG90eXBlLmxvYWRJbWFn
ZUFzeW5jPWZ1bmN0aW9uKGUsdCl7aWYoIXQuX2RhdGEpe2lmKHRoaXMubG9nT3BlbihlKyIgIiso
dC5uYW1lfHwiIikpLHQudXJpKXQuX2RhdGE9dGhpcy5sb2FkVXJpQXN5bmMoZSsiL3VyaSIsdCx0
LnVyaSk7ZWxzZXt2YXIgbj1hLkdldChlKyIvYnVmZmVyVmlldyIsdGhpcy5fZ2x0Zi5idWZmZXJW
aWV3cyx0LmJ1ZmZlclZpZXcpO3QuX2RhdGE9dGhpcy5sb2FkQnVmZmVyVmlld0FzeW5jKCIvYnVm
ZmVyVmlld3MvIituLmluZGV4LG4pfXRoaXMubG9nQ2xvc2UoKX1yZXR1cm4gdC5fZGF0YX0sZS5w
cm90b3R5cGUubG9hZFVyaUFzeW5jPWZ1bmN0aW9uKHQsbixhKXt2YXIgaT10aGlzLHM9dGhpcy5f
ZXh0ZW5zaW9uc0xvYWRVcmlBc3luYyh0LG4sYSk7aWYocylyZXR1cm4gcztpZighZS5fVmFsaWRh
dGVVcmkoYSkpdGhyb3cgbmV3IEVycm9yKHQrIjogJyIrYSsiJyBpcyBpbnZhbGlkIik7aWYoci5U
b29scy5Jc0Jhc2U2NChhKSl7dmFyIGw9bmV3IFVpbnQ4QXJyYXkoci5Ub29scy5EZWNvZGVCYXNl
NjQoYSkpO3JldHVybiB0aGlzLmxvZygiRGVjb2RlZCAiK2Euc3Vic3RyKDAsNjQpKyIuLi4gKCIr
bC5sZW5ndGgrIiBieXRlcykiKSxQcm9taXNlLnJlc29sdmUobCl9cmV0dXJuIHRoaXMubG9nKCJM
b2FkaW5nICIrYSksdGhpcy5fcGFyZW50LnByZXByb2Nlc3NVcmxBc3luYyh0aGlzLl9yb290VXJs
K2EpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scyl7aWYo
IWkuX2Rpc3Bvc2VkKXt2YXIgbD1yLlRvb2xzLkxvYWRGaWxlKGUsZnVuY3Rpb24oZSl7aWYoIWku
X2Rpc3Bvc2VkKXt2YXIgdD1uZXcgVWludDhBcnJheShlKTtpLmxvZygiTG9hZGVkICIrYSsiICgi
K3QubGVuZ3RoKyIgYnl0ZXMpIiksbih0KX19LGZ1bmN0aW9uKGUpe2lmKCFpLl9kaXNwb3NlZCYm
KGwmJihsLl9sZW5ndGhDb21wdXRhYmxlPWUubGVuZ3RoQ29tcHV0YWJsZSxsLl9sb2FkZWQ9ZS5s
b2FkZWQsbC5fdG90YWw9ZS50b3RhbCksaS5fc3RhdGU9PT1vLkdMVEZMb2FkZXJTdGF0ZS5MT0FE
SU5HKSl0cnl7aS5fb25Qcm9ncmVzcygpfWNhdGNoKGUpe3MoZSl9fSxpLl9iYWJ5bG9uU2NlbmUu
b2ZmbGluZVByb3ZpZGVyLCEwLGZ1bmN0aW9uKGUsbil7aS5fZGlzcG9zZWR8fHMobmV3IHIuTG9h
ZEZpbGVFcnJvcih0KyI6IEZhaWxlZCB0byBsb2FkICciK2ErIiciKyhlPyI6ICIrZS5zdGF0dXMr
IiAiK2Uuc3RhdHVzVGV4dDoiIiksZSkpfSk7aS5fcmVxdWVzdHMucHVzaChsKX19KX0pfSxlLnBy
b3RvdHlwZS5fb25Qcm9ncmVzcz1mdW5jdGlvbigpe2lmKHRoaXMuX3Byb2dyZXNzQ2FsbGJhY2sp
e2Zvcih2YXIgZT0hMCx0PTAsbj0wLG89MCxhPXRoaXMuX3JlcXVlc3RzO288YS5sZW5ndGg7bysr
KXt2YXIgaT1hW29dO2lmKHZvaWQgMD09PWkuX2xlbmd0aENvbXB1dGFibGV8fHZvaWQgMD09PWku
X2xvYWRlZHx8dm9pZCAwPT09aS5fdG90YWwpcmV0dXJuO2U9ZSYmaS5fbGVuZ3RoQ29tcHV0YWJs
ZSx0Kz1pLl9sb2FkZWQsbis9aS5fdG90YWx9dGhpcy5fcHJvZ3Jlc3NDYWxsYmFjayhuZXcgci5T
Y2VuZUxvYWRlclByb2dyZXNzRXZlbnQoZSx0LGU/bjowKSl9fSxlLkFkZFBvaW50ZXJNZXRhZGF0
YT1mdW5jdGlvbihlLHQpe3ZhciBuPWUubWV0YWRhdGE9ZS5tZXRhZGF0YXx8e30scj1uLmdsdGY9
bi5nbHRmfHx7fTsoci5wb2ludGVycz1yLnBvaW50ZXJzfHxbXSkucHVzaCh0KX0sZS5fR2V0VGV4
dHVyZVdyYXBNb2RlPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQ9bnVsbD09dD8xMDQ5Nzp0KXtjYXNl
IDMzMDcxOnJldHVybiByLlRleHR1cmUuQ0xBTVBfQUREUkVTU01PREU7Y2FzZSAzMzY0ODpyZXR1
cm4gci5UZXh0dXJlLk1JUlJPUl9BRERSRVNTTU9ERTtjYXNlIDEwNDk3OnJldHVybiByLlRleHR1
cmUuV1JBUF9BRERSRVNTTU9ERTtkZWZhdWx0OnJldHVybiByLkxvZ2dlci5XYXJuKGUrIjogSW52
YWxpZCB2YWx1ZSAoIit0KyIpIiksci5UZXh0dXJlLldSQVBfQUREUkVTU01PREV9fSxlLl9HZXRU
ZXh0dXJlU2FtcGxpbmdNb2RlPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09dC5tYWdGaWx0ZXI/
OTcyOTp0Lm1hZ0ZpbHRlcixvPW51bGw9PXQubWluRmlsdGVyPzk5ODc6dC5taW5GaWx0ZXI7aWYo
OTcyOT09PW4pc3dpdGNoKG8pe2Nhc2UgOTcyODpyZXR1cm4gci5UZXh0dXJlLkxJTkVBUl9ORUFS
RVNUO2Nhc2UgOTcyOTpyZXR1cm4gci5UZXh0dXJlLkxJTkVBUl9MSU5FQVI7Y2FzZSA5OTg0OnJl
dHVybiByLlRleHR1cmUuTElORUFSX05FQVJFU1RfTUlQTkVBUkVTVDtjYXNlIDk5ODU6cmV0dXJu
IHIuVGV4dHVyZS5MSU5FQVJfTElORUFSX01JUE5FQVJFU1Q7Y2FzZSA5OTg2OnJldHVybiByLlRl
eHR1cmUuTElORUFSX05FQVJFU1RfTUlQTElORUFSO2Nhc2UgOTk4NzpyZXR1cm4gci5UZXh0dXJl
LkxJTkVBUl9MSU5FQVJfTUlQTElORUFSO2RlZmF1bHQ6cmV0dXJuIHIuTG9nZ2VyLldhcm4oZSsi
L21pbkZpbHRlcjogSW52YWxpZCB2YWx1ZSAoIitvKyIpIiksci5UZXh0dXJlLkxJTkVBUl9MSU5F
QVJfTUlQTElORUFSfWVsc2Ugc3dpdGNoKDk3MjghPT1uJiZyLkxvZ2dlci5XYXJuKGUrIi9tYWdG
aWx0ZXI6IEludmFsaWQgdmFsdWUgKCIrbisiKSIpLG8pe2Nhc2UgOTcyODpyZXR1cm4gci5UZXh0
dXJlLk5FQVJFU1RfTkVBUkVTVDtjYXNlIDk3Mjk6cmV0dXJuIHIuVGV4dHVyZS5ORUFSRVNUX0xJ
TkVBUjtjYXNlIDk5ODQ6cmV0dXJuIHIuVGV4dHVyZS5ORUFSRVNUX05FQVJFU1RfTUlQTkVBUkVT
VDtjYXNlIDk5ODU6cmV0dXJuIHIuVGV4dHVyZS5ORUFSRVNUX0xJTkVBUl9NSVBORUFSRVNUO2Nh
c2UgOTk4NjpyZXR1cm4gci5UZXh0dXJlLk5FQVJFU1RfTkVBUkVTVF9NSVBMSU5FQVI7Y2FzZSA5
OTg3OnJldHVybiByLlRleHR1cmUuTkVBUkVTVF9MSU5FQVJfTUlQTElORUFSO2RlZmF1bHQ6cmV0
dXJuIHIuTG9nZ2VyLldhcm4oZSsiL21pbkZpbHRlcjogSW52YWxpZCB2YWx1ZSAoIitvKyIpIiks
ci5UZXh0dXJlLk5FQVJFU1RfTkVBUkVTVF9NSVBORUFSRVNUfX0sZS5fR2V0VHlwZWRBcnJheUNv
bnN0cnVjdG9yPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UgNTEyMDpyZXR1cm4gSW50OEFy
cmF5O2Nhc2UgNTEyMTpyZXR1cm4gVWludDhBcnJheTtjYXNlIDUxMjI6cmV0dXJuIEludDE2QXJy
YXk7Y2FzZSA1MTIzOnJldHVybiBVaW50MTZBcnJheTtjYXNlIDUxMjU6cmV0dXJuIFVpbnQzMkFy
cmF5O2Nhc2UgNTEyNjpyZXR1cm4gRmxvYXQzMkFycmF5O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9y
KGUrIjogSW52YWxpZCBjb21wb25lbnQgdHlwZSAiK3QpfX0sZS5fR2V0VHlwZWRBcnJheT1mdW5j
dGlvbih0LG4scixvLGEpe3ZhciBpPXIuYnVmZmVyO289ci5ieXRlT2Zmc2V0KyhvfHwwKTt2YXIg
cz1lLl9HZXRUeXBlZEFycmF5Q29uc3RydWN0b3IodCsiL2NvbXBvbmVudFR5cGUiLG4pO3RyeXty
ZXR1cm4gbmV3IHMoaSxvLGEpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcih0KyI6ICIrZSl9fSxl
Ll9HZXROdW1Db21wb25lbnRzPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiU0NBTEFSIjpy
ZXR1cm4gMTtjYXNlIlZFQzIiOnJldHVybiAyO2Nhc2UiVkVDMyI6cmV0dXJuIDM7Y2FzZSJWRUM0
IjpjYXNlIk1BVDIiOnJldHVybiA0O2Nhc2UiTUFUMyI6cmV0dXJuIDk7Y2FzZSJNQVQ0IjpyZXR1
cm4gMTZ9dGhyb3cgbmV3IEVycm9yKGUrIjogSW52YWxpZCB0eXBlICgiK3QrIikiKX0sZS5fVmFs
aWRhdGVVcmk9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuVG9vbHMuSXNCYXNlNjQoZSl8fC0xPT09ZS5p
bmRleE9mKCIuLiIpfSxlLl9HZXREcmF3TW9kZT1mdW5jdGlvbihlLHQpe3N3aXRjaChudWxsPT10
JiYodD00KSx0KXtjYXNlIDA6cmV0dXJuIHIuTWF0ZXJpYWwuUG9pbnRMaXN0RHJhd01vZGU7Y2Fz
ZSAxOnJldHVybiByLk1hdGVyaWFsLkxpbmVMaXN0RHJhd01vZGU7Y2FzZSAyOnJldHVybiByLk1h
dGVyaWFsLkxpbmVMb29wRHJhd01vZGU7Y2FzZSAzOnJldHVybiByLk1hdGVyaWFsLkxpbmVTdHJp
cERyYXdNb2RlO2Nhc2UgNDpyZXR1cm4gci5NYXRlcmlhbC5UcmlhbmdsZUZpbGxNb2RlO2Nhc2Ug
NTpyZXR1cm4gci5NYXRlcmlhbC5UcmlhbmdsZVN0cmlwRHJhd01vZGU7Y2FzZSA2OnJldHVybiBy
Lk1hdGVyaWFsLlRyaWFuZ2xlRmFuRHJhd01vZGV9dGhyb3cgbmV3IEVycm9yKGUrIjogSW52YWxp
ZCBtZXNoIHByaW1pdGl2ZSBtb2RlICgiK3QrIikiKX0sZS5wcm90b3R5cGUuX2NvbXBpbGVNYXRl
cmlhbHNBc3luYz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5fcGFyZW50Ll9zdGFydFBlcmZv
cm1hbmNlQ291bnRlcigiQ29tcGlsZSBtYXRlcmlhbHMiKTt2YXIgdD1uZXcgQXJyYXk7aWYodGhp
cy5fZ2x0Zi5tYXRlcmlhbHMpZm9yKHZhciBuPTAscj10aGlzLl9nbHRmLm1hdGVyaWFscztuPHIu
bGVuZ3RoO24rKyl7dmFyIG89cltuXTtpZihvLl9kYXRhKWZvcih2YXIgYSBpbiBvLl9kYXRhKWZv
cih2YXIgaT1vLl9kYXRhW2FdLHM9MCxsPWkuYmFieWxvbk1lc2hlcztzPGwubGVuZ3RoO3MrKyl7
dmFyIHU9bFtzXTt1LmNvbXB1dGVXb3JsZE1hdHJpeCghMCk7dmFyIGM9aS5iYWJ5bG9uTWF0ZXJp
YWw7dC5wdXNoKGMuZm9yY2VDb21waWxhdGlvbkFzeW5jKHUpKSx0LnB1c2goYy5mb3JjZUNvbXBp
bGF0aW9uQXN5bmModSx7dXNlSW5zdGFuY2VzOiEwfSkpLHRoaXMuX3BhcmVudC51c2VDbGlwUGxh
bmUmJih0LnB1c2goYy5mb3JjZUNvbXBpbGF0aW9uQXN5bmModSx7Y2xpcFBsYW5lOiEwfSkpLHQu
cHVzaChjLmZvcmNlQ29tcGlsYXRpb25Bc3luYyh1LHtjbGlwUGxhbmU6ITAsdXNlSW5zdGFuY2Vz
OiEwfSkpKX19cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4oZnVuY3Rpb24oKXtlLl9wYXJlbnQu
X2VuZFBlcmZvcm1hbmNlQ291bnRlcigiQ29tcGlsZSBtYXRlcmlhbHMiKX0pfSxlLnByb3RvdHlw
ZS5fY29tcGlsZVNoYWRvd0dlbmVyYXRvcnNBc3luYz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhp
cy5fcGFyZW50Ll9zdGFydFBlcmZvcm1hbmNlQ291bnRlcigiQ29tcGlsZSBzaGFkb3cgZ2VuZXJh
dG9ycyIpO2Zvcih2YXIgdD1uZXcgQXJyYXksbj0wLHI9dGhpcy5fYmFieWxvblNjZW5lLmxpZ2h0
cztuPHIubGVuZ3RoO24rKyl7dmFyIG89cltuXS5nZXRTaGFkb3dHZW5lcmF0b3IoKTtvJiZ0LnB1
c2goby5mb3JjZUNvbXBpbGF0aW9uQXN5bmMoKSl9cmV0dXJuIFByb21pc2UuYWxsKHQpLnRoZW4o
ZnVuY3Rpb24oKXtlLl9wYXJlbnQuX2VuZFBlcmZvcm1hbmNlQ291bnRlcigiQ29tcGlsZSBzaGFk
b3cgZ2VuZXJhdG9ycyIpfSl9LGUucHJvdG90eXBlLl9mb3JFYWNoRXh0ZW5zaW9ucz1mdW5jdGlv
bihlKXtmb3IodmFyIHQ9MCxuPXRoaXMuX2V4dGVuc2lvbnM7dDxuLmxlbmd0aDt0Kyspe3ZhciBy
PW5bdF07ci5lbmFibGVkJiZlKHIpfX0sZS5wcm90b3R5cGUuX2FwcGx5RXh0ZW5zaW9ucz1mdW5j
dGlvbihlLHQsbil7Zm9yKHZhciByPTAsbz10aGlzLl9leHRlbnNpb25zO3I8by5sZW5ndGg7cisr
KXt2YXIgYT1vW3JdO2lmKGEuZW5hYmxlZCl7dmFyIGk9YS5uYW1lKyIuIit0LHM9ZTtzLl9hY3Rp
dmVMb2FkZXJFeHRlbnNpb25GdW5jdGlvbnM9cy5fYWN0aXZlTG9hZGVyRXh0ZW5zaW9uRnVuY3Rp
b25zfHx7fTt2YXIgbD1zLl9hY3RpdmVMb2FkZXJFeHRlbnNpb25GdW5jdGlvbnM7aWYoIWxbaV0p
e2xbaV09ITA7dHJ5e3ZhciB1PW4oYSk7aWYodSlyZXR1cm4gdX1maW5hbGx5e2RlbGV0ZSBsW2ld
fX19fXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5fZXh0ZW5zaW9uc09uTG9hZGluZz1mdW5jdGlv
bigpe3RoaXMuX2ZvckVhY2hFeHRlbnNpb25zKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uTG9hZGlu
ZyYmZS5vbkxvYWRpbmcoKX0pfSxlLnByb3RvdHlwZS5fZXh0ZW5zaW9uc09uUmVhZHk9ZnVuY3Rp
b24oKXt0aGlzLl9mb3JFYWNoRXh0ZW5zaW9ucyhmdW5jdGlvbihlKXtyZXR1cm4gZS5vblJlYWR5
JiZlLm9uUmVhZHkoKX0pfSxlLnByb3RvdHlwZS5fZXh0ZW5zaW9uc0xvYWRTY2VuZUFzeW5jPWZ1
bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2FwcGx5RXh0ZW5zaW9ucyh0LCJsb2FkU2NlbmUiLGZ1
bmN0aW9uKG4pe3JldHVybiBuLmxvYWRTY2VuZUFzeW5jJiZuLmxvYWRTY2VuZUFzeW5jKGUsdCl9
KX0sZS5wcm90b3R5cGUuX2V4dGVuc2lvbnNMb2FkTm9kZUFzeW5jPWZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4gdGhpcy5fYXBwbHlFeHRlbnNpb25zKHQsImxvYWROb2RlIixmdW5jdGlvbihyKXtyZXR1
cm4gci5sb2FkTm9kZUFzeW5jJiZyLmxvYWROb2RlQXN5bmMoZSx0LG4pfSl9LGUucHJvdG90eXBl
Ll9leHRlbnNpb25zTG9hZENhbWVyYUFzeW5jPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5f
YXBwbHlFeHRlbnNpb25zKHQsImxvYWRDYW1lcmEiLGZ1bmN0aW9uKHIpe3JldHVybiByLmxvYWRD
YW1lcmFBc3luYyYmci5sb2FkQ2FtZXJhQXN5bmMoZSx0LG4pfSl9LGUucHJvdG90eXBlLl9leHRl
bnNpb25zTG9hZFZlcnRleERhdGFBc3luYz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuX2Fw
cGx5RXh0ZW5zaW9ucyh0LCJsb2FkVmVydGV4RGF0YSIsZnVuY3Rpb24ocil7cmV0dXJuIHIuX2xv
YWRWZXJ0ZXhEYXRhQXN5bmMmJnIuX2xvYWRWZXJ0ZXhEYXRhQXN5bmMoZSx0LG4pfSl9LGUucHJv
dG90eXBlLl9leHRlbnNpb25zTG9hZE1lc2hQcmltaXRpdmVBc3luYz1mdW5jdGlvbihlLHQsbixy
LG8sYSl7cmV0dXJuIHRoaXMuX2FwcGx5RXh0ZW5zaW9ucyhvLCJsb2FkTWVzaFByaW1pdGl2ZSIs
ZnVuY3Rpb24oaSl7cmV0dXJuIGkuX2xvYWRNZXNoUHJpbWl0aXZlQXN5bmMmJmkuX2xvYWRNZXNo
UHJpbWl0aXZlQXN5bmMoZSx0LG4scixvLGEpfSl9LGUucHJvdG90eXBlLl9leHRlbnNpb25zTG9h
ZE1hdGVyaWFsQXN5bmM9ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gdGhpcy5fYXBwbHlFeHRl
bnNpb25zKHQsImxvYWRNYXRlcmlhbCIsZnVuY3Rpb24oYSl7cmV0dXJuIGEuX2xvYWRNYXRlcmlh
bEFzeW5jJiZhLl9sb2FkTWF0ZXJpYWxBc3luYyhlLHQsbixyLG8pfSl9LGUucHJvdG90eXBlLl9l
eHRlbnNpb25zQ3JlYXRlTWF0ZXJpYWw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLl9hcHBs
eUV4dGVuc2lvbnModCwiY3JlYXRlTWF0ZXJpYWwiLGZ1bmN0aW9uKHIpe3JldHVybiByLmNyZWF0
ZU1hdGVyaWFsJiZyLmNyZWF0ZU1hdGVyaWFsKGUsdCxuKX0pfSxlLnByb3RvdHlwZS5fZXh0ZW5z
aW9uc0xvYWRNYXRlcmlhbFByb3BlcnRpZXNBc3luYz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRo
aXMuX2FwcGx5RXh0ZW5zaW9ucyh0LCJsb2FkTWF0ZXJpYWxQcm9wZXJ0aWVzIixmdW5jdGlvbihy
KXtyZXR1cm4gci5sb2FkTWF0ZXJpYWxQcm9wZXJ0aWVzQXN5bmMmJnIubG9hZE1hdGVyaWFsUHJv
cGVydGllc0FzeW5jKGUsdCxuKX0pfSxlLnByb3RvdHlwZS5fZXh0ZW5zaW9uc0xvYWRUZXh0dXJl
SW5mb0FzeW5jPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5fYXBwbHlFeHRlbnNpb25zKHQs
ImxvYWRUZXh0dXJlSW5mbyIsZnVuY3Rpb24ocil7cmV0dXJuIHIubG9hZFRleHR1cmVJbmZvQXN5
bmMmJnIubG9hZFRleHR1cmVJbmZvQXN5bmMoZSx0LG4pfSl9LGUucHJvdG90eXBlLl9leHRlbnNp
b25zTG9hZEFuaW1hdGlvbkFzeW5jPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2FwcGx5RXh0
ZW5zaW9ucyh0LCJsb2FkQW5pbWF0aW9uIixmdW5jdGlvbihuKXtyZXR1cm4gbi5sb2FkQW5pbWF0
aW9uQXN5bmMmJm4ubG9hZEFuaW1hdGlvbkFzeW5jKGUsdCl9KX0sZS5wcm90b3R5cGUuX2V4dGVu
c2lvbnNMb2FkU2tpbkFzeW5jPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5fYXBwbHlFeHRl
bnNpb25zKG4sImxvYWRTa2luIixmdW5jdGlvbihyKXtyZXR1cm4gci5fbG9hZFNraW5Bc3luYyYm
ci5fbG9hZFNraW5Bc3luYyhlLHQsbil9KX0sZS5wcm90b3R5cGUuX2V4dGVuc2lvbnNMb2FkVXJp
QXN5bmM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLl9hcHBseUV4dGVuc2lvbnModCwibG9h
ZFVyaSIsZnVuY3Rpb24ocil7cmV0dXJuIHIuX2xvYWRVcmlBc3luYyYmci5fbG9hZFVyaUFzeW5j
KGUsdCxuKX0pfSxlLnByb3RvdHlwZS5fZXh0ZW5zaW9uc0xvYWRCdWZmZXJWaWV3QXN5bmM9ZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fYXBwbHlFeHRlbnNpb25zKHQsImxvYWRCdWZmZXJWaWV3
IixmdW5jdGlvbihuKXtyZXR1cm4gbi5sb2FkQnVmZmVyVmlld0FzeW5jJiZuLmxvYWRCdWZmZXJW
aWV3QXN5bmMoZSx0KX0pfSxlLnByb3RvdHlwZS5fZXh0ZW5zaW9uc0xvYWRCdWZmZXJBc3luYz1m
dW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdGhpcy5fYXBwbHlFeHRlbnNpb25zKHQsImxvYWRCdWZm
ZXIiLGZ1bmN0aW9uKG8pe3JldHVybiBvLmxvYWRCdWZmZXJBc3luYyYmby5sb2FkQnVmZmVyQXN5
bmMoZSx0LG4scil9KX0sZS5Mb2FkRXh0ZW5zaW9uQXN5bmM9ZnVuY3Rpb24oZSx0LG4scil7aWYo
IXQuZXh0ZW5zaW9ucylyZXR1cm4gbnVsbDt2YXIgbz10LmV4dGVuc2lvbnNbbl07cmV0dXJuIG8/
cihlKyIvZXh0ZW5zaW9ucy8iK24sbyk6bnVsbH0sZS5Mb2FkRXh0cmFBc3luYz1mdW5jdGlvbihl
LHQsbixyKXtpZighdC5leHRyYXMpcmV0dXJuIG51bGw7dmFyIG89dC5leHRyYXNbbl07cmV0dXJu
IG8/cihlKyIvZXh0cmFzLyIrbixvKTpudWxsfSxlLnByb3RvdHlwZS5pc0V4dGVuc2lvblVzZWQ9
ZnVuY3Rpb24oZSl7cmV0dXJuISF0aGlzLl9nbHRmLmV4dGVuc2lvbnNVc2VkJiYtMSE9PXRoaXMu
X2dsdGYuZXh0ZW5zaW9uc1VzZWQuaW5kZXhPZihlKX0sZS5wcm90b3R5cGUubG9nT3Blbj1mdW5j
dGlvbihlKXt0aGlzLl9wYXJlbnQuX2xvZ09wZW4oZSl9LGUucHJvdG90eXBlLmxvZ0Nsb3NlPWZ1
bmN0aW9uKCl7dGhpcy5fcGFyZW50Ll9sb2dDbG9zZSgpfSxlLnByb3RvdHlwZS5sb2c9ZnVuY3Rp
b24oZSl7dGhpcy5fcGFyZW50Ll9sb2coZSl9LGUucHJvdG90eXBlLnN0YXJ0UGVyZm9ybWFuY2VD
b3VudGVyPWZ1bmN0aW9uKGUpe3RoaXMuX3BhcmVudC5fc3RhcnRQZXJmb3JtYW5jZUNvdW50ZXIo
ZSl9LGUucHJvdG90eXBlLmVuZFBlcmZvcm1hbmNlQ291bnRlcj1mdW5jdGlvbihlKXt0aGlzLl9w
YXJlbnQuX2VuZFBlcmZvcm1hbmNlQ291bnRlcihlKX0sZS5fRGVmYXVsdFNhbXBsZXI9e2luZGV4
Oi0xfSxlLl9SZWdpc3RlcmVkRXh0ZW5zaW9ucz17fSxlfSgpO28uR0xURkZpbGVMb2FkZXIuX0Ny
ZWF0ZUdMVEYyTG9hZGVyPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaShlKX19LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7bi5yKHQpLG4uZCh0LCJHTFRGTG9hZGVyQ29vcmRpbmF0ZVN5c3Rl
bU1vZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KSxuLmQodCwiR0xURkxvYWRlckFuaW1hdGlvblN0
YXJ0TW9kZSIsZnVuY3Rpb24oKXtyZXR1cm4gb30pLG4uZCh0LCJHTFRGTG9hZGVyU3RhdGUiLGZ1
bmN0aW9uKCl7cmV0dXJuIGF9KSxuLmQodCwiR0xURkZpbGVMb2FkZXIiLGZ1bmN0aW9uKCl7cmV0
dXJuIHN9KTt2YXIgcixvLGEsaT1uKDApOyFmdW5jdGlvbihlKXtlW2UuQVVUTz0wXT0iQVVUTyIs
ZVtlLkZPUkNFX1JJR0hUX0hBTkRFRD0xXT0iRk9SQ0VfUklHSFRfSEFOREVEIn0ocnx8KHI9e30p
KSxmdW5jdGlvbihlKXtlW2UuTk9ORT0wXT0iTk9ORSIsZVtlLkZJUlNUPTFdPSJGSVJTVCIsZVtl
LkFMTD0yXT0iQUxMIn0ob3x8KG89e30pKSxmdW5jdGlvbihlKXtlW2UuTE9BRElORz0wXT0iTE9B
RElORyIsZVtlLlJFQURZPTFdPSJSRUFEWSIsZVtlLkNPTVBMRVRFPTJdPSJDT01QTEVURSJ9KGF8
fChhPXt9KSk7dmFyIHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5vblBhcnNlZE9ic2Vy
dmFibGU9bmV3IGkuT2JzZXJ2YWJsZSx0aGlzLmNvb3JkaW5hdGVTeXN0ZW1Nb2RlPXIuQVVUTyx0
aGlzLmFuaW1hdGlvblN0YXJ0TW9kZT1vLkZJUlNULHRoaXMuY29tcGlsZU1hdGVyaWFscz0hMSx0
aGlzLnVzZUNsaXBQbGFuZT0hMSx0aGlzLmNvbXBpbGVTaGFkb3dHZW5lcmF0b3JzPSExLHRoaXMu
dHJhbnNwYXJlbmN5QXNDb3ZlcmFnZT0hMSx0aGlzLnVzZVJhbmdlUmVxdWVzdHM9ITEsdGhpcy5j
cmVhdGVJbnN0YW5jZXM9ITAsdGhpcy5wcmVwcm9jZXNzVXJsQXN5bmM9ZnVuY3Rpb24oZSl7cmV0
dXJuIFByb21pc2UucmVzb2x2ZShlKX0sdGhpcy5vbk1lc2hMb2FkZWRPYnNlcnZhYmxlPW5ldyBp
Lk9ic2VydmFibGUsdGhpcy5vblRleHR1cmVMb2FkZWRPYnNlcnZhYmxlPW5ldyBpLk9ic2VydmFi
bGUsdGhpcy5vbk1hdGVyaWFsTG9hZGVkT2JzZXJ2YWJsZT1uZXcgaS5PYnNlcnZhYmxlLHRoaXMu
b25DYW1lcmFMb2FkZWRPYnNlcnZhYmxlPW5ldyBpLk9ic2VydmFibGUsdGhpcy5vbkNvbXBsZXRl
T2JzZXJ2YWJsZT1uZXcgaS5PYnNlcnZhYmxlLHRoaXMub25FcnJvck9ic2VydmFibGU9bmV3IGku
T2JzZXJ2YWJsZSx0aGlzLm9uRGlzcG9zZU9ic2VydmFibGU9bmV3IGkuT2JzZXJ2YWJsZSx0aGlz
Lm9uRXh0ZW5zaW9uTG9hZGVkT2JzZXJ2YWJsZT1uZXcgaS5PYnNlcnZhYmxlLHRoaXMudmFsaWRh
dGU9ITEsdGhpcy5vblZhbGlkYXRlZE9ic2VydmFibGU9bmV3IGkuT2JzZXJ2YWJsZSx0aGlzLl9s
b2FkZXI9bnVsbCx0aGlzLm5hbWU9ImdsdGYiLHRoaXMuZXh0ZW5zaW9ucz17Ii5nbHRmIjp7aXNC
aW5hcnk6ITF9LCIuZ2xiIjp7aXNCaW5hcnk6ITB9fSx0aGlzLl9sb2dJbmRlbnRMZXZlbD0wLHRo
aXMuX2xvZ2dpbmdFbmFibGVkPSExLHRoaXMuX2xvZz10aGlzLl9sb2dEaXNhYmxlZCx0aGlzLl9j
YXB0dXJlUGVyZm9ybWFuY2VDb3VudGVycz0hMSx0aGlzLl9zdGFydFBlcmZvcm1hbmNlQ291bnRl
cj10aGlzLl9zdGFydFBlcmZvcm1hbmNlQ291bnRlckRpc2FibGVkLHRoaXMuX2VuZFBlcmZvcm1h
bmNlQ291bnRlcj10aGlzLl9lbmRQZXJmb3JtYW5jZUNvdW50ZXJEaXNhYmxlZH1yZXR1cm4gT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJvblBhcnNlZCIse3NldDpmdW5jdGlvbihl
KXt0aGlzLl9vblBhcnNlZE9ic2VydmVyJiZ0aGlzLm9uUGFyc2VkT2JzZXJ2YWJsZS5yZW1vdmUo
dGhpcy5fb25QYXJzZWRPYnNlcnZlciksdGhpcy5fb25QYXJzZWRPYnNlcnZlcj10aGlzLm9uUGFy
c2VkT2JzZXJ2YWJsZS5hZGQoZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJvbk1lc2hMb2FkZWQiLHtzZXQ6ZnVuY3Rp
b24oZSl7dGhpcy5fb25NZXNoTG9hZGVkT2JzZXJ2ZXImJnRoaXMub25NZXNoTG9hZGVkT2JzZXJ2
YWJsZS5yZW1vdmUodGhpcy5fb25NZXNoTG9hZGVkT2JzZXJ2ZXIpLHRoaXMuX29uTWVzaExvYWRl
ZE9ic2VydmVyPXRoaXMub25NZXNoTG9hZGVkT2JzZXJ2YWJsZS5hZGQoZSl9LGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJv
blRleHR1cmVMb2FkZWQiLHtzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25UZXh0dXJlTG9hZGVkT2Jz
ZXJ2ZXImJnRoaXMub25UZXh0dXJlTG9hZGVkT2JzZXJ2YWJsZS5yZW1vdmUodGhpcy5fb25UZXh0
dXJlTG9hZGVkT2JzZXJ2ZXIpLHRoaXMuX29uVGV4dHVyZUxvYWRlZE9ic2VydmVyPXRoaXMub25U
ZXh0dXJlTG9hZGVkT2JzZXJ2YWJsZS5hZGQoZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxl
OiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJvbk1hdGVyaWFsTG9hZGVk
Iix7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuX29uTWF0ZXJpYWxMb2FkZWRPYnNlcnZlciYmdGhpcy5v
bk1hdGVyaWFsTG9hZGVkT2JzZXJ2YWJsZS5yZW1vdmUodGhpcy5fb25NYXRlcmlhbExvYWRlZE9i
c2VydmVyKSx0aGlzLl9vbk1hdGVyaWFsTG9hZGVkT2JzZXJ2ZXI9dGhpcy5vbk1hdGVyaWFsTG9h
ZGVkT2JzZXJ2YWJsZS5hZGQoZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJvbkNhbWVyYUxvYWRlZCIse3NldDpmdW5j
dGlvbihlKXt0aGlzLl9vbkNhbWVyYUxvYWRlZE9ic2VydmVyJiZ0aGlzLm9uQ2FtZXJhTG9hZGVk
T2JzZXJ2YWJsZS5yZW1vdmUodGhpcy5fb25DYW1lcmFMb2FkZWRPYnNlcnZlciksdGhpcy5fb25D
YW1lcmFMb2FkZWRPYnNlcnZlcj10aGlzLm9uQ2FtZXJhTG9hZGVkT2JzZXJ2YWJsZS5hZGQoZSl9
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUu
cHJvdG90eXBlLCJvbkNvbXBsZXRlIix7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuX29uQ29tcGxldGVP
YnNlcnZlciYmdGhpcy5vbkNvbXBsZXRlT2JzZXJ2YWJsZS5yZW1vdmUodGhpcy5fb25Db21wbGV0
ZU9ic2VydmVyKSx0aGlzLl9vbkNvbXBsZXRlT2JzZXJ2ZXI9dGhpcy5vbkNvbXBsZXRlT2JzZXJ2
YWJsZS5hZGQoZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUucHJvdG90eXBlLCJvbkVycm9yIix7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuX29u
RXJyb3JPYnNlcnZlciYmdGhpcy5vbkVycm9yT2JzZXJ2YWJsZS5yZW1vdmUodGhpcy5fb25FcnJv
ck9ic2VydmVyKSx0aGlzLl9vbkVycm9yT2JzZXJ2ZXI9dGhpcy5vbkVycm9yT2JzZXJ2YWJsZS5h
ZGQoZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGUucHJvdG90eXBlLCJvbkRpc3Bvc2UiLHtzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5fb25EaXNw
b3NlT2JzZXJ2ZXImJnRoaXMub25EaXNwb3NlT2JzZXJ2YWJsZS5yZW1vdmUodGhpcy5fb25EaXNw
b3NlT2JzZXJ2ZXIpLHRoaXMuX29uRGlzcG9zZU9ic2VydmVyPXRoaXMub25EaXNwb3NlT2JzZXJ2
YWJsZS5hZGQoZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGUucHJvdG90eXBlLCJvbkV4dGVuc2lvbkxvYWRlZCIse3NldDpmdW5jdGlvbihl
KXt0aGlzLl9vbkV4dGVuc2lvbkxvYWRlZE9ic2VydmVyJiZ0aGlzLm9uRXh0ZW5zaW9uTG9hZGVk
T2JzZXJ2YWJsZS5yZW1vdmUodGhpcy5fb25FeHRlbnNpb25Mb2FkZWRPYnNlcnZlciksdGhpcy5f
b25FeHRlbnNpb25Mb2FkZWRPYnNlcnZlcj10aGlzLm9uRXh0ZW5zaW9uTG9hZGVkT2JzZXJ2YWJs
ZS5hZGQoZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUucHJvdG90eXBlLCJsb2dnaW5nRW5hYmxlZCIse2dldDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLl9sb2dnaW5nRW5hYmxlZH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX2xvZ2dpbmdFbmFi
bGVkIT09ZSYmKHRoaXMuX2xvZ2dpbmdFbmFibGVkPWUsdGhpcy5fbG9nZ2luZ0VuYWJsZWQ/dGhp
cy5fbG9nPXRoaXMuX2xvZ0VuYWJsZWQ6dGhpcy5fbG9nPXRoaXMuX2xvZ0Rpc2FibGVkKX0sZW51
bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90
b3R5cGUsImNhcHR1cmVQZXJmb3JtYW5jZUNvdW50ZXJzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX2NhcHR1cmVQZXJmb3JtYW5jZUNvdW50ZXJzfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy5f
Y2FwdHVyZVBlcmZvcm1hbmNlQ291bnRlcnMhPT1lJiYodGhpcy5fY2FwdHVyZVBlcmZvcm1hbmNl
Q291bnRlcnM9ZSx0aGlzLl9jYXB0dXJlUGVyZm9ybWFuY2VDb3VudGVycz8odGhpcy5fc3RhcnRQ
ZXJmb3JtYW5jZUNvdW50ZXI9dGhpcy5fc3RhcnRQZXJmb3JtYW5jZUNvdW50ZXJFbmFibGVkLHRo
aXMuX2VuZFBlcmZvcm1hbmNlQ291bnRlcj10aGlzLl9lbmRQZXJmb3JtYW5jZUNvdW50ZXJFbmFi
bGVkKToodGhpcy5fc3RhcnRQZXJmb3JtYW5jZUNvdW50ZXI9dGhpcy5fc3RhcnRQZXJmb3JtYW5j
ZUNvdW50ZXJEaXNhYmxlZCx0aGlzLl9lbmRQZXJmb3JtYW5jZUNvdW50ZXI9dGhpcy5fZW5kUGVy
Zm9ybWFuY2VDb3VudGVyRGlzYWJsZWQpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9
KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIm9uVmFsaWRhdGVkIix7c2V0OmZ1
bmN0aW9uKGUpe3RoaXMuX29uVmFsaWRhdGVkT2JzZXJ2ZXImJnRoaXMub25WYWxpZGF0ZWRPYnNl
cnZhYmxlLnJlbW92ZSh0aGlzLl9vblZhbGlkYXRlZE9ic2VydmVyKSx0aGlzLl9vblZhbGlkYXRl
ZE9ic2VydmVyPXRoaXMub25WYWxpZGF0ZWRPYnNlcnZhYmxlLmFkZChlKX0sZW51bWVyYWJsZToh
MCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5f
bG9hZGVyJiYodGhpcy5fbG9hZGVyLmRpc3Bvc2UoKSx0aGlzLl9sb2FkZXI9bnVsbCksdGhpcy5f
Y2xlYXIoKSx0aGlzLm9uRGlzcG9zZU9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKHZvaWQgMCks
dGhpcy5vbkRpc3Bvc2VPYnNlcnZhYmxlLmNsZWFyKCl9LGUucHJvdG90eXBlLl9jbGVhcj1mdW5j
dGlvbigpe3RoaXMucHJlcHJvY2Vzc1VybEFzeW5jPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNl
LnJlc29sdmUoZSl9LHRoaXMub25NZXNoTG9hZGVkT2JzZXJ2YWJsZS5jbGVhcigpLHRoaXMub25U
ZXh0dXJlTG9hZGVkT2JzZXJ2YWJsZS5jbGVhcigpLHRoaXMub25NYXRlcmlhbExvYWRlZE9ic2Vy
dmFibGUuY2xlYXIoKSx0aGlzLm9uQ2FtZXJhTG9hZGVkT2JzZXJ2YWJsZS5jbGVhcigpLHRoaXMu
b25Db21wbGV0ZU9ic2VydmFibGUuY2xlYXIoKSx0aGlzLm9uRXh0ZW5zaW9uTG9hZGVkT2JzZXJ2
YWJsZS5jbGVhcigpfSxlLnByb3RvdHlwZS5yZXF1ZXN0RmlsZT1mdW5jdGlvbihlLHQsbixyLG8s
YSl7dmFyIHM9dGhpcztpZihvKXtpZih0aGlzLnVzZVJhbmdlUmVxdWVzdHMpe3RoaXMudmFsaWRh
dGUmJmkuTG9nZ2VyLldhcm4oImdsVEYgdmFsaWRhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIHdoZW4g
cmFuZ2UgcmVxdWVzdHMgYXJlIGVuYWJsZWQiKTt2YXIgbD1uZXcgQXJyYXksdT17YWJvcnQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gbC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFib3J0KCl9KX0s
b25Db21wbGV0ZU9ic2VydmFibGU6bmV3IGkuT2JzZXJ2YWJsZX0sYz17cmVhZEFzeW5jOmZ1bmN0
aW9uKG4sbyl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsaSl7bC5wdXNoKGUuX3JlcXVl
c3RGaWxlKHQsZnVuY3Rpb24oZSx0KXtjLmJ5dGVMZW5ndGg9TnVtYmVyKHQuZ2V0UmVzcG9uc2VI
ZWFkZXIoIkNvbnRlbnQtUmFuZ2UiKS5zcGxpdCgiLyIpWzFdKSxhKG5ldyBVaW50OEFycmF5KGUp
KX0sciwhMCwhMCxmdW5jdGlvbihlKXtpKGUpfSxmdW5jdGlvbihlKXtlLnNldFJlcXVlc3RIZWFk
ZXIoIlJhbmdlIiwiYnl0ZXM9IituKyItIisobitvLTEpKX0pKX0pfSxieXRlTGVuZ3RoOjB9O3Jl
dHVybiB0aGlzLl91bnBhY2tCaW5hcnlBc3luYyhuZXcgaS5EYXRhUmVhZGVyKGMpKS50aGVuKGZ1
bmN0aW9uKGUpe3Uub25Db21wbGV0ZU9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKHUpLG4oZSl9
LGEpLHV9cmV0dXJuIGUuX3JlcXVlc3RGaWxlKHQsZnVuY3Rpb24oZSx0KXt2YXIgcj1lO3MuX3Vu
cGFja0JpbmFyeUFzeW5jKG5ldyBpLkRhdGFSZWFkZXIoe3JlYWRBc3luYzpmdW5jdGlvbihlLHQp
e3JldHVybiBQcm9taXNlLnJlc29sdmUobmV3IFVpbnQ4QXJyYXkocixlLHQpKX0sYnl0ZUxlbmd0
aDpyLmJ5dGVMZW5ndGh9KSkudGhlbihmdW5jdGlvbihlKXtuKGUsdCl9LGEpfSxyLCEwLCEwLGEp
fXJldHVybiBlLl9yZXF1ZXN0RmlsZSh0LGZ1bmN0aW9uKHIsbyl7cy5fdmFsaWRhdGVBc3luYyhl
LHIsaS5Ub29scy5HZXRGb2xkZXJQYXRoKHQpLGkuVG9vbHMuR2V0RmlsZW5hbWUodCkpLG4oe2pz
b246cy5fcGFyc2VKc29uKHIpfSxvKX0sciwhMCwhMSxhKX0sZS5wcm90b3R5cGUucmVhZEZpbGU9
ZnVuY3Rpb24oZSx0LG4scixvLGEpe3ZhciBzPXRoaXM7cmV0dXJuIGUuX3JlYWRGaWxlKHQsZnVu
Y3Rpb24ocil7aWYocy5fdmFsaWRhdGVBc3luYyhlLHIsImZpbGU6Iix0Lm5hbWUpLG8pe3ZhciBs
PXI7cy5fdW5wYWNrQmluYXJ5QXN5bmMobmV3IGkuRGF0YVJlYWRlcih7cmVhZEFzeW5jOmZ1bmN0
aW9uKGUsdCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgVWludDhBcnJheShsLGUsdCkpfSxi
eXRlTGVuZ3RoOmwuYnl0ZUxlbmd0aH0pKS50aGVuKG4sYSl9ZWxzZSBuKHtqc29uOnMuX3BhcnNl
SnNvbihyKX0pfSxyLG8sYSl9LGUucHJvdG90eXBlLmltcG9ydE1lc2hBc3luYz1mdW5jdGlvbihl
LHQsbixyLG8sYSl7dmFyIGk9dGhpcztyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5j
dGlvbigpe3JldHVybiBpLm9uUGFyc2VkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnMobiksaS5v
blBhcnNlZE9ic2VydmFibGUuY2xlYXIoKSxpLl9sb2coIkxvYWRpbmcgIisoYXx8IiIpKSxpLl9s
b2FkZXI9aS5fZ2V0TG9hZGVyKG4pLGkuX2xvYWRlci5pbXBvcnRNZXNoQXN5bmMoZSx0LG4scixv
LGEpfSl9LGUucHJvdG90eXBlLmxvYWRBc3luYz1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBhPXRo
aXM7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYS5vblBh
cnNlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKHQpLGEub25QYXJzZWRPYnNlcnZhYmxlLmNs
ZWFyKCksYS5fbG9nKCJMb2FkaW5nICIrKG98fCIiKSksYS5fbG9hZGVyPWEuX2dldExvYWRlcih0
KSxhLl9sb2FkZXIubG9hZEFzeW5jKGUsdCxuLHIsbyl9KX0sZS5wcm90b3R5cGUubG9hZEFzc2V0
Q29udGFpbmVyQXN5bmM9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT10aGlzO3JldHVybiBQcm9t
aXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7YS5vblBhcnNlZE9ic2VydmFibGUubm90aWZ5
T2JzZXJ2ZXJzKHQpLGEub25QYXJzZWRPYnNlcnZhYmxlLmNsZWFyKCksYS5fbG9nKCJMb2FkaW5n
ICIrKG98fCIiKSksYS5fbG9hZGVyPWEuX2dldExvYWRlcih0KTt2YXIgcz1bXTthLm9uTWF0ZXJp
YWxMb2FkZWRPYnNlcnZhYmxlLmFkZChmdW5jdGlvbihlKXtzLnB1c2goZSl9KTt2YXIgbD1bXTty
ZXR1cm4gYS5vblRleHR1cmVMb2FkZWRPYnNlcnZhYmxlLmFkZChmdW5jdGlvbihlKXtsLnB1c2go
ZSl9KSxhLl9sb2FkZXIuaW1wb3J0TWVzaEFzeW5jKG51bGwsZSx0LG4scixvKS50aGVuKGZ1bmN0
aW9uKHQpe3ZhciBuPW5ldyBpLkFzc2V0Q29udGFpbmVyKGUpO3JldHVybiBBcnJheS5wcm90b3R5
cGUucHVzaC5hcHBseShuLm1lc2hlcyx0Lm1lc2hlcyksQXJyYXkucHJvdG90eXBlLnB1c2guYXBw
bHkobi5wYXJ0aWNsZVN5c3RlbXMsdC5wYXJ0aWNsZVN5c3RlbXMpLEFycmF5LnByb3RvdHlwZS5w
dXNoLmFwcGx5KG4uc2tlbGV0b25zLHQuc2tlbGV0b25zKSxBcnJheS5wcm90b3R5cGUucHVzaC5h
cHBseShuLmFuaW1hdGlvbkdyb3Vwcyx0LmFuaW1hdGlvbkdyb3VwcyksQXJyYXkucHJvdG90eXBl
LnB1c2guYXBwbHkobi5tYXRlcmlhbHMscyksQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkobi50
ZXh0dXJlcyxsKSxuLnJlbW92ZUFsbEZyb21TY2VuZSgpLG59KX0pfSxlLnByb3RvdHlwZS5jYW5E
aXJlY3RMb2FkPWZ1bmN0aW9uKGUpe3JldHVybi0xIT09ZS5pbmRleE9mKCJhc3NldCIpJiYtMSE9
PWUuaW5kZXhPZigidmVyc2lvbiIpfSxlLnByb3RvdHlwZS5kaXJlY3RMb2FkPWZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHRoaXMuX3ZhbGlkYXRlQXN5bmMoZSx0KSx7anNvbjp0aGlzLl9wYXJzZUpzb24o
dCl9fSxlLnByb3RvdHlwZS5jcmVhdGVQbHVnaW49ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGV9LE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibG9hZGVyU3RhdGUiLHtnZXQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy5fbG9hZGVyP3RoaXMuX2xvYWRlci5zdGF0ZTpudWxsfSxlbnVtZXJh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLndoZW5Db21wbGV0ZUFzeW5jPWZ1
bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLm9u
Q29tcGxldGVPYnNlcnZhYmxlLmFkZE9uY2UoZnVuY3Rpb24oKXt0KCl9KSxlLm9uRXJyb3JPYnNl
cnZhYmxlLmFkZE9uY2UoZnVuY3Rpb24oZSl7bihlKX0pfSl9LGUucHJvdG90eXBlLl92YWxpZGF0
ZUFzeW5jPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYodm9pZCAwPT09biYmKG49IiIp
LCF0aGlzLnZhbGlkYXRlfHwidW5kZWZpbmVkIj09dHlwZW9mIEdMVEZWYWxpZGF0b3IpcmV0dXJu
IFByb21pc2UucmVzb2x2ZSgpO3RoaXMuX3N0YXJ0UGVyZm9ybWFuY2VDb3VudGVyKCJWYWxpZGF0
ZSBKU09OIik7dmFyIGE9e2V4dGVybmFsUmVzb3VyY2VGdW5jdGlvbjpmdW5jdGlvbih0KXtyZXR1
cm4gby5wcmVwcm9jZXNzVXJsQXN5bmMobit0KS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9s
b2FkRmlsZUFzeW5jKHQsdm9pZCAwLCEwLCEwKX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIG5l
dyBVaW50OEFycmF5KGUpfSl9fTtyZXR1cm4gciYmKGEudXJpPSJmaWxlOiI9PT1uP3I6bityKSwo
dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP0dMVEZWYWxpZGF0b3IudmFsaWRhdGVCeXRlcyhuZXcg
VWludDhBcnJheSh0KSxhKTpHTFRGVmFsaWRhdG9yLnZhbGlkYXRlU3RyaW5nKHQsYSkpLnRoZW4o
ZnVuY3Rpb24oZSl7by5fZW5kUGVyZm9ybWFuY2VDb3VudGVyKCJWYWxpZGF0ZSBKU09OIiksby5v
blZhbGlkYXRlZE9ic2VydmFibGUubm90aWZ5T2JzZXJ2ZXJzKGUpLG8ub25WYWxpZGF0ZWRPYnNl
cnZhYmxlLmNsZWFyKCl9LGZ1bmN0aW9uKGUpe28uX2VuZFBlcmZvcm1hbmNlQ291bnRlcigiVmFs
aWRhdGUgSlNPTiIpLGkuVG9vbHMuV2FybigiRmFpbGVkIHRvIHZhbGlkYXRlOiAiK2UpLG8ub25W
YWxpZGF0ZWRPYnNlcnZhYmxlLmNsZWFyKCl9KX0sZS5wcm90b3R5cGUuX2dldExvYWRlcj1mdW5j
dGlvbih0KXt2YXIgbj1KU09OLnBhcnNlKHQpLmFzc2V0fHx7fTt0aGlzLl9sb2coIkFzc2V0IHZl
cnNpb246ICIrbi52ZXJzaW9uKSxuLm1pblZlcnNpb24mJnRoaXMuX2xvZygiQXNzZXQgbWluaW11
bSB2ZXJzaW9uOiAiK24ubWluVmVyc2lvbiksbi5nZW5lcmF0b3ImJnRoaXMuX2xvZygiQXNzZXQg
Z2VuZXJhdG9yOiAiK24uZ2VuZXJhdG9yKTt2YXIgcj1lLl9wYXJzZVZlcnNpb24obi52ZXJzaW9u
KTtpZighcil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmVyc2lvbjogIituLnZlcnNpb24pO2lm
KHZvaWQgMCE9PW4ubWluVmVyc2lvbil7dmFyIG89ZS5fcGFyc2VWZXJzaW9uKG4ubWluVmVyc2lv
bik7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1pbmltdW0gdmVyc2lvbjogIituLm1p
blZlcnNpb24pO2lmKGUuX2NvbXBhcmVWZXJzaW9uKG8se21ham9yOjIsbWlub3I6MH0pPjApdGhy
b3cgbmV3IEVycm9yKCJJbmNvbXBhdGlibGUgbWluaW11bSB2ZXJzaW9uOiAiK24ubWluVmVyc2lv
bil9dmFyIGE9ezE6ZS5fQ3JlYXRlR0xURjFMb2FkZXIsMjplLl9DcmVhdGVHTFRGMkxvYWRlcn1b
ci5tYWpvcl07aWYoIWEpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCB2ZXJzaW9uOiAiK24u
dmVyc2lvbik7cmV0dXJuIGEodGhpcyl9LGUucHJvdG90eXBlLl9wYXJzZUpzb249ZnVuY3Rpb24o
ZSl7dGhpcy5fc3RhcnRQZXJmb3JtYW5jZUNvdW50ZXIoIlBhcnNlIEpTT04iKSx0aGlzLl9sb2co
IkpTT04gbGVuZ3RoOiAiK2UubGVuZ3RoKTt2YXIgdD1KU09OLnBhcnNlKGUpO3JldHVybiB0aGlz
Ll9lbmRQZXJmb3JtYW5jZUNvdW50ZXIoIlBhcnNlIEpTT04iKSx0fSxlLnByb3RvdHlwZS5fdW5w
YWNrQmluYXJ5QXN5bmM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5fc3RhcnRQ
ZXJmb3JtYW5jZUNvdW50ZXIoIlVucGFjayBCaW5hcnkiKSxlLmxvYWRBc3luYygyMCkudGhlbihm
dW5jdGlvbigpe3ZhciBuPWUucmVhZFVpbnQzMigpO2lmKDExNzk5Mzc4OTUhPT1uKXRocm93IG5l
dyBFcnJvcigiVW5leHBlY3RlZCBtYWdpYzogIituKTt2YXIgcj1lLnJlYWRVaW50MzIoKTt0Lmxv
Z2dpbmdFbmFibGVkJiZ0Ll9sb2coIkJpbmFyeSB2ZXJzaW9uOiAiK3IpO3ZhciBvLGE9ZS5yZWFk
VWludDMyKCk7aWYoYSE9PWUuYnVmZmVyLmJ5dGVMZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJMZW5n
dGggaW4gaGVhZGVyIGRvZXMgbm90IG1hdGNoIGFjdHVhbCBkYXRhIGxlbmd0aDogIithKyIgIT0g
IitlLmJ1ZmZlci5ieXRlTGVuZ3RoKTtzd2l0Y2gocil7Y2FzZSAxOm89dC5fdW5wYWNrQmluYXJ5
VjFBc3luYyhlKTticmVhaztjYXNlIDI6bz10Ll91bnBhY2tCaW5hcnlWMkFzeW5jKGUpO2JyZWFr
O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCB2ZXJzaW9uOiAiK3IpfXJldHVy
biB0Ll9lbmRQZXJmb3JtYW5jZUNvdW50ZXIoIlVucGFjayBCaW5hcnkiKSxvfSl9LGUucHJvdG90
eXBlLl91bnBhY2tCaW5hcnlWMUFzeW5jPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVhZFVpbnQzMigp
LG49ZS5yZWFkVWludDMyKCk7aWYoMCE9PW4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGNv
bnRlbnQgZm9ybWF0OiAiK24pO3ZhciByPWUuYnVmZmVyLmJ5dGVMZW5ndGgtZS5ieXRlT2Zmc2V0
LG89e2pzb246dGhpcy5fcGFyc2VKc29uKGUucmVhZFN0cmluZyh0KSksYmluOm51bGx9O2lmKDAh
PT1yKXt2YXIgYT1lLmJ5dGVPZmZzZXQ7by5iaW49e3JlYWRBc3luYzpmdW5jdGlvbih0LG4pe3Jl
dHVybiBlLmJ1ZmZlci5yZWFkQXN5bmMoYSt0LG4pfSxieXRlTGVuZ3RoOnJ9fXJldHVybiBQcm9t
aXNlLnJlc29sdmUobyl9LGUucHJvdG90eXBlLl91bnBhY2tCaW5hcnlWMkFzeW5jPWZ1bmN0aW9u
KGUpe3ZhciB0PXRoaXMsbj0xMzEzODIxNTE0LHI9NTEzMDU2MixvPWUucmVhZFVpbnQzMigpO2lm
KGUucmVhZFVpbnQzMigpIT09bil0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGNodW5rIGZvcm1hdCBp
cyBub3QgSlNPTiIpO3JldHVybiBlLmJ5dGVPZmZzZXQrbz09PWUuYnVmZmVyLmJ5dGVMZW5ndGg/
ZS5sb2FkQXN5bmMobykudGhlbihmdW5jdGlvbigpe3JldHVybntqc29uOnQuX3BhcnNlSnNvbihl
LnJlYWRTdHJpbmcobykpLGJpbjpudWxsfX0pOmUubG9hZEFzeW5jKG8rOCkudGhlbihmdW5jdGlv
bigpe3ZhciBhPXtqc29uOnQuX3BhcnNlSnNvbihlLnJlYWRTdHJpbmcobykpLGJpbjpudWxsfSxp
PWZ1bmN0aW9uKCl7dmFyIHQ9ZS5yZWFkVWludDMyKCk7c3dpdGNoKGUucmVhZFVpbnQzMigpKXtj
YXNlIG46dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIEpTT04gY2h1bmsiKTtjYXNlIHI6dmFy
IG89ZS5ieXRlT2Zmc2V0O2EuYmluPXtyZWFkQXN5bmM6ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5i
dWZmZXIucmVhZEFzeW5jKG8rdCxuKX0sYnl0ZUxlbmd0aDp0fSxlLnNraXBCeXRlcyh0KTticmVh
aztkZWZhdWx0OmUuc2tpcEJ5dGVzKHQpfXJldHVybiBlLmJ5dGVPZmZzZXQhPT1lLmJ1ZmZlci5i
eXRlTGVuZ3RoP2UubG9hZEFzeW5jKDgpLnRoZW4oaSk6UHJvbWlzZS5yZXNvbHZlKGEpfTtyZXR1
cm4gaSgpfSl9LGUuX3BhcnNlVmVyc2lvbj1mdW5jdGlvbihlKXtpZigiMS4wIj09PWV8fCIxLjAu
MSI9PT1lKXJldHVybnttYWpvcjoxLG1pbm9yOjB9O3ZhciB0PShlKyIiKS5tYXRjaCgvXihcZCsp
XC4oXGQrKS8pO3JldHVybiB0P3ttYWpvcjpwYXJzZUludCh0WzFdKSxtaW5vcjpwYXJzZUludCh0
WzJdKX06bnVsbH0sZS5fY29tcGFyZVZlcnNpb249ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYWpv
cj50Lm1ham9yPzE6ZS5tYWpvcjx0Lm1ham9yPy0xOmUubWlub3I+dC5taW5vcj8xOmUubWlub3I8
dC5taW5vcj8tMTowfSxlLnByb3RvdHlwZS5fbG9nT3Blbj1mdW5jdGlvbihlKXt0aGlzLl9sb2co
ZSksdGhpcy5fbG9nSW5kZW50TGV2ZWwrK30sZS5wcm90b3R5cGUuX2xvZ0Nsb3NlPWZ1bmN0aW9u
KCl7LS10aGlzLl9sb2dJbmRlbnRMZXZlbH0sZS5wcm90b3R5cGUuX2xvZ0VuYWJsZWQ9ZnVuY3Rp
b24odCl7dmFyIG49ZS5fbG9nU3BhY2VzLnN1YnN0cigwLDIqdGhpcy5fbG9nSW5kZW50TGV2ZWwp
O2kuTG9nZ2VyLkxvZygiIituK3QpfSxlLnByb3RvdHlwZS5fbG9nRGlzYWJsZWQ9ZnVuY3Rpb24o
ZSl7fSxlLnByb3RvdHlwZS5fc3RhcnRQZXJmb3JtYW5jZUNvdW50ZXJFbmFibGVkPWZ1bmN0aW9u
KGUpe2kuVG9vbHMuU3RhcnRQZXJmb3JtYW5jZUNvdW50ZXIoZSl9LGUucHJvdG90eXBlLl9zdGFy
dFBlcmZvcm1hbmNlQ291bnRlckRpc2FibGVkPWZ1bmN0aW9uKGUpe30sZS5wcm90b3R5cGUuX2Vu
ZFBlcmZvcm1hbmNlQ291bnRlckVuYWJsZWQ9ZnVuY3Rpb24oZSl7aS5Ub29scy5FbmRQZXJmb3Jt
YW5jZUNvdW50ZXIoZSl9LGUucHJvdG90eXBlLl9lbmRQZXJmb3JtYW5jZUNvdW50ZXJEaXNhYmxl
ZD1mdW5jdGlvbihlKXt9LGUuSW5jcmVtZW50YWxMb2FkaW5nPSEwLGUuSG9tb2dlbmVvdXNDb29y
ZGluYXRlcz0hMSxlLl9sb2dTcGFjZXM9IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IixlfSgpO2kuU2NlbmVMb2FkZXImJmkuU2NlbmVMb2FkZXIuUmVnaXN0ZXJQbHVnaW4obmV3IHMp
fSxmdW5jdGlvbihlLHQpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1u
fHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaChlKXsib2JqZWN0Ij09dHlwZW9m
IHdpbmRvdyYmKG49d2luZG93KX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtuLnIodCk7dmFyIHI9bigwKSxvPW4oMSksYT0iRVhUX2xpZ2h0c19pbWFnZV9iYXNlZCIs
aT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5uYW1lPWEsdGhpcy5fbG9hZGVyPWUsdGhp
cy5lbmFibGVkPXRoaXMuX2xvYWRlci5pc0V4dGVuc2lvblVzZWQoYSl9cmV0dXJuIGUucHJvdG90
eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fbG9hZGVyLGRlbGV0ZSB0aGlzLl9s
aWdodHN9LGUucHJvdG90eXBlLm9uTG9hZGluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xvYWRl
ci5nbHRmLmV4dGVuc2lvbnM7aWYoZSYmZVt0aGlzLm5hbWVdKXt2YXIgdD1lW3RoaXMubmFtZV07
dGhpcy5fbGlnaHRzPXQubGlnaHRzfX0sZS5wcm90b3R5cGUubG9hZFNjZW5lQXN5bmM9ZnVuY3Rp
b24oZSx0KXt2YXIgbj10aGlzO3JldHVybiBvLmIuTG9hZEV4dGVuc2lvbkFzeW5jKGUsdCx0aGlz
Lm5hbWUsZnVuY3Rpb24ocixhKXt2YXIgaT1uZXcgQXJyYXk7aS5wdXNoKG4uX2xvYWRlci5sb2Fk
U2NlbmVBc3luYyhlLHQpKSxuLl9sb2FkZXIubG9nT3BlbigiIityKTt2YXIgcz1vLmEuR2V0KHIr
Ii9saWdodCIsbi5fbGlnaHRzLGEubGlnaHQpO3JldHVybiBpLnB1c2gobi5fbG9hZExpZ2h0QXN5
bmMoIiMvZXh0ZW5zaW9ucy8iK24ubmFtZSsiL2xpZ2h0cy8iK2EubGlnaHQscykudGhlbihmdW5j
dGlvbihlKXtuLl9sb2FkZXIuYmFieWxvblNjZW5lLmVudmlyb25tZW50VGV4dHVyZT1lfSkpLG4u
X2xvYWRlci5sb2dDbG9zZSgpLFByb21pc2UuYWxsKGkpLnRoZW4oZnVuY3Rpb24oKXt9KX0pfSxl
LnByb3RvdHlwZS5fbG9hZExpZ2h0QXN5bmM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2lmKCF0
Ll9sb2FkZWQpe3ZhciBhPW5ldyBBcnJheTt0aGlzLl9sb2FkZXIubG9nT3BlbigiIitlKTtmb3Io
dmFyIGk9bmV3IEFycmF5KHQuc3BlY3VsYXJJbWFnZXMubGVuZ3RoKSxzPWZ1bmN0aW9uKG4pe3Zh
ciByPXQuc3BlY3VsYXJJbWFnZXNbbl07aVtuXT1uZXcgQXJyYXkoci5sZW5ndGgpO2Zvcih2YXIg
cz1mdW5jdGlvbih0KXt2YXIgcz1lKyIvc3BlY3VsYXJJbWFnZXMvIituKyIvIit0O2wuX2xvYWRl
ci5sb2dPcGVuKCIiK3MpO3ZhciB1PXJbdF0sYz1vLmEuR2V0KHMsbC5fbG9hZGVyLmdsdGYuaW1h
Z2VzLHUpO2EucHVzaChsLl9sb2FkZXIubG9hZEltYWdlQXN5bmMoIiMvaW1hZ2VzLyIrdSxjKS50
aGVuKGZ1bmN0aW9uKGUpe2lbbl1bdF09ZX0pKSxsLl9sb2FkZXIubG9nQ2xvc2UoKX0sdT0wO3U8
ci5sZW5ndGg7dSsrKXModSl9LGw9dGhpcyx1PTA7dTx0LnNwZWN1bGFySW1hZ2VzLmxlbmd0aDt1
Kyspcyh1KTt0aGlzLl9sb2FkZXIubG9nQ2xvc2UoKSx0Ll9sb2FkZWQ9UHJvbWlzZS5hbGwoYSku
dGhlbihmdW5jdGlvbigpe3ZhciBlPW5ldyByLlJhd0N1YmVUZXh0dXJlKG4uX2xvYWRlci5iYWJ5
bG9uU2NlbmUsbnVsbCx0LnNwZWN1bGFySW1hZ2VTaXplKTtpZih0Ll9iYWJ5bG9uVGV4dHVyZT1l
LG51bGwhPXQuaW50ZW5zaXR5JiYoZS5sZXZlbD10LmludGVuc2l0eSksdC5yb3RhdGlvbil7dmFy
IG89ci5RdWF0ZXJuaW9uLkZyb21BcnJheSh0LnJvdGF0aW9uKTtuLl9sb2FkZXIuYmFieWxvblNj
ZW5lLnVzZVJpZ2h0SGFuZGVkU3lzdGVtfHwobz1yLlF1YXRlcm5pb24uSW52ZXJzZShvKSksci5N
YXRyaXguRnJvbVF1YXRlcm5pb25Ub1JlZihvLGUuZ2V0UmVmbGVjdGlvblRleHR1cmVNYXRyaXgo
KSl9dmFyIGE9ci5TcGhlcmljYWxIYXJtb25pY3MuRnJvbUFycmF5KHQuaXJyYWRpYW5jZUNvZWZm
aWNpZW50cyk7YS5zY2FsZUluUGxhY2UodC5pbnRlbnNpdHkpLGEuY29udmVydElycmFkaWFuY2VU
b0xhbWJlcnRpYW5SYWRpYW5jZSgpO3ZhciBzPXIuU3BoZXJpY2FsUG9seW5vbWlhbC5Gcm9tSGFy
bW9uaWNzKGEpLGw9KGkubGVuZ3RoLTEpL3IuU2NhbGFyLkxvZzIodC5zcGVjdWxhckltYWdlU2l6
ZSk7cmV0dXJuIGUudXBkYXRlUkdCREFzeW5jKGkscyxsKX0pfXJldHVybiB0Ll9sb2FkZWQudGhl
bihmdW5jdGlvbigpe3JldHVybiB0Ll9iYWJ5bG9uVGV4dHVyZX0pfSxlfSgpO28uYi5SZWdpc3Rl
ckV4dGVuc2lvbihhLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgaShlKX0pO3ZhciBzPSJLSFJfZHJh
Y29fbWVzaF9jb21wcmVzc2lvbiIsbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5uYW1l
PXMsdGhpcy5fbG9hZGVyPWUsdGhpcy5lbmFibGVkPXIuRHJhY29Db21wcmVzc2lvbi5EZWNvZGVy
QXZhaWxhYmxlJiZ0aGlzLl9sb2FkZXIuaXNFeHRlbnNpb25Vc2VkKHMpfXJldHVybiBlLnByb3Rv
dHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuZHJhY29Db21wcmVzc2lvbixkZWxl
dGUgdGhpcy5fbG9hZGVyfSxlLnByb3RvdHlwZS5fbG9hZFZlcnRleERhdGFBc3luYz1mdW5jdGlv
bihlLHQsbil7dmFyIGE9dGhpcztyZXR1cm4gby5iLkxvYWRFeHRlbnNpb25Bc3luYyhlLHQsdGhp
cy5uYW1lLGZ1bmN0aW9uKGkscyl7aWYobnVsbCE9dC5tb2RlKXtpZig1IT09dC5tb2RlJiY0IT09
dC5tb2RlKXRocm93IG5ldyBFcnJvcihlKyI6IFVuc3VwcG9ydGVkIG1vZGUgIit0Lm1vZGUpO2lm
KDU9PT10Lm1vZGUpdGhyb3cgbmV3IEVycm9yKGUrIjogTW9kZSAiK3QubW9kZSsiIGlzIG5vdCBj
dXJyZW50bHkgc3VwcG9ydGVkIil9dmFyIGw9e30sdT1mdW5jdGlvbihlLHQpe3ZhciByPXMuYXR0
cmlidXRlc1tlXTtudWxsIT1yJiYobi5fZGVsYXlJbmZvPW4uX2RlbGF5SW5mb3x8W10sLTE9PT1u
Ll9kZWxheUluZm8uaW5kZXhPZih0KSYmbi5fZGVsYXlJbmZvLnB1c2godCksbFt0XT1yKX07dSgi
UE9TSVRJT04iLHIuVmVydGV4QnVmZmVyLlBvc2l0aW9uS2luZCksdSgiTk9STUFMIixyLlZlcnRl
eEJ1ZmZlci5Ob3JtYWxLaW5kKSx1KCJUQU5HRU5UIixyLlZlcnRleEJ1ZmZlci5UYW5nZW50S2lu
ZCksdSgiVEVYQ09PUkRfMCIsci5WZXJ0ZXhCdWZmZXIuVVZLaW5kKSx1KCJURVhDT09SRF8xIixy
LlZlcnRleEJ1ZmZlci5VVjJLaW5kKSx1KCJKT0lOVFNfMCIsci5WZXJ0ZXhCdWZmZXIuTWF0cmlj
ZXNJbmRpY2VzS2luZCksdSgiV0VJR0hUU18wIixyLlZlcnRleEJ1ZmZlci5NYXRyaWNlc1dlaWdo
dHNLaW5kKSx1KCJDT0xPUl8wIixyLlZlcnRleEJ1ZmZlci5Db2xvcktpbmQpO3ZhciBjPW8uYS5H
ZXQoaSxhLl9sb2FkZXIuZ2x0Zi5idWZmZXJWaWV3cyxzLmJ1ZmZlclZpZXcpO3JldHVybiBjLl9k
cmFjb0JhYnlsb25HZW9tZXRyeXx8KGMuX2RyYWNvQmFieWxvbkdlb21ldHJ5PWEuX2xvYWRlci5s
b2FkQnVmZmVyVmlld0FzeW5jKCIjL2J1ZmZlclZpZXdzLyIrYy5pbmRleCxjKS50aGVuKGZ1bmN0
aW9uKHQpe3JldHVybihhLmRyYWNvQ29tcHJlc3Npb258fHIuRHJhY29Db21wcmVzc2lvbi5EZWZh
dWx0KS5kZWNvZGVNZXNoQXN5bmModCxsKS50aGVuKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyByLkdl
b21ldHJ5KG4ubmFtZSxhLl9sb2FkZXIuYmFieWxvblNjZW5lKTtyZXR1cm4gZS5hcHBseVRvR2Vv
bWV0cnkodCksdH0pLmNhdGNoKGZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcihlKyI6ICIrdC5t
ZXNzYWdlKX0pfSkpLGMuX2RyYWNvQmFieWxvbkdlb21ldHJ5fSl9LGV9KCk7by5iLlJlZ2lzdGVy
RXh0ZW5zaW9uKHMsZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBsKGUpfSk7dmFyIHUsYz0iS0hSX2xp
Z2h0c19wdW5jdHVhbCI7IWZ1bmN0aW9uKGUpe2UuRElSRUNUSU9OQUw9ImRpcmVjdGlvbmFsIixl
LlBPSU5UPSJwb2ludCIsZS5TUE9UPSJzcG90In0odXx8KHU9e30pKTt2YXIgZj1mdW5jdGlvbigp
e2Z1bmN0aW9uIGUoZSl7dGhpcy5uYW1lPWMsdGhpcy5fbG9hZGVyPWUsdGhpcy5lbmFibGVkPXRo
aXMuX2xvYWRlci5pc0V4dGVuc2lvblVzZWQoYyl9cmV0dXJuIGUucHJvdG90eXBlLmRpc3Bvc2U9
ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fbG9hZGVyLGRlbGV0ZSB0aGlzLl9saWdodHN9LGUucHJv
dG90eXBlLm9uTG9hZGluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xvYWRlci5nbHRmLmV4dGVu
c2lvbnM7aWYoZSYmZVt0aGlzLm5hbWVdKXt2YXIgdD1lW3RoaXMubmFtZV07dGhpcy5fbGlnaHRz
PXQubGlnaHRzfX0sZS5wcm90b3R5cGUubG9hZE5vZGVBc3luYz1mdW5jdGlvbihlLHQsbil7dmFy
IGE9dGhpcztyZXR1cm4gby5iLkxvYWRFeHRlbnNpb25Bc3luYyhlLHQsdGhpcy5uYW1lLGZ1bmN0
aW9uKGkscyl7cmV0dXJuIGEuX2xvYWRlci5sb2FkTm9kZUFzeW5jKGUsdCxmdW5jdGlvbihlKXt2
YXIgdCxsPW8uYS5HZXQoaSxhLl9saWdodHMscy5saWdodCksYz1sLm5hbWV8fGUubmFtZTtzd2l0
Y2gobC50eXBlKXtjYXNlIHUuRElSRUNUSU9OQUw6dD1uZXcgci5EaXJlY3Rpb25hbExpZ2h0KGMs
ci5WZWN0b3IzLkJhY2t3YXJkKCksYS5fbG9hZGVyLmJhYnlsb25TY2VuZSk7YnJlYWs7Y2FzZSB1
LlBPSU5UOnQ9bmV3IHIuUG9pbnRMaWdodChjLHIuVmVjdG9yMy5aZXJvKCksYS5fbG9hZGVyLmJh
Ynlsb25TY2VuZSk7YnJlYWs7Y2FzZSB1LlNQT1Q6dmFyIGY9bmV3IHIuU3BvdExpZ2h0KGMsci5W
ZWN0b3IzLlplcm8oKSxyLlZlY3RvcjMuQmFja3dhcmQoKSwwLDEsYS5fbG9hZGVyLmJhYnlsb25T
Y2VuZSk7Zi5hbmdsZT0yKihsLnNwb3QmJmwuc3BvdC5vdXRlckNvbmVBbmdsZXx8TWF0aC5QSS80
KSxmLmlubmVyQW5nbGU9MioobC5zcG90JiZsLnNwb3QuaW5uZXJDb25lQW5nbGV8fDApLHQ9Zjti
cmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihpKyI6IEludmFsaWQgbGlnaHQgdHlwZSAoIits
LnR5cGUrIikiKX10LmZhbGxvZmZUeXBlPXIuTGlnaHQuRkFMTE9GRl9HTFRGLHQuZGlmZnVzZT1s
LmNvbG9yP3IuQ29sb3IzLkZyb21BcnJheShsLmNvbG9yKTpyLkNvbG9yMy5XaGl0ZSgpLHQuaW50
ZW5zaXR5PW51bGw9PWwuaW50ZW5zaXR5PzE6bC5pbnRlbnNpdHksdC5yYW5nZT1udWxsPT1sLnJh
bmdlP051bWJlci5NQVhfVkFMVUU6bC5yYW5nZSx0LnBhcmVudD1lLG8uYi5BZGRQb2ludGVyTWV0
YWRhdGEodCxpKSxuKGUpfSl9KX0sZX0oKTtvLmIuUmVnaXN0ZXJFeHRlbnNpb24oYyxmdW5jdGlv
bihlKXtyZXR1cm4gbmV3IGYoZSl9KTt2YXIgZD0iS0hSX21hdGVyaWFsc19wYnJTcGVjdWxhckds
b3NzaW5lc3MiLGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMubmFtZT1kLHRoaXMub3Jk
ZXI9MjAwLHRoaXMuX2xvYWRlcj1lLHRoaXMuZW5hYmxlZD10aGlzLl9sb2FkZXIuaXNFeHRlbnNp
b25Vc2VkKGQpfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZGVsZXRlIHRo
aXMuX2xvYWRlcn0sZS5wcm90b3R5cGUubG9hZE1hdGVyaWFsUHJvcGVydGllc0FzeW5jPWZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj10aGlzO3JldHVybiBvLmIuTG9hZEV4dGVuc2lvbkFzeW5jKGUsdCx0
aGlzLm5hbWUsZnVuY3Rpb24obyxhKXt2YXIgaT1uZXcgQXJyYXk7cmV0dXJuIGkucHVzaChyLl9s
b2FkZXIubG9hZE1hdGVyaWFsQmFzZVByb3BlcnRpZXNBc3luYyhlLHQsbikpLGkucHVzaChyLl9s
b2FkU3BlY3VsYXJHbG9zc2luZXNzUHJvcGVydGllc0FzeW5jKG8sdCxhLG4pKSxyLl9sb2FkZXIu
bG9hZE1hdGVyaWFsQWxwaGFQcm9wZXJ0aWVzKGUsdCxuKSxQcm9taXNlLmFsbChpKS50aGVuKGZ1
bmN0aW9uKCl7fSl9KX0sZS5wcm90b3R5cGUuX2xvYWRTcGVjdWxhckdsb3NzaW5lc3NQcm9wZXJ0
aWVzQXN5bmM9ZnVuY3Rpb24oZSx0LG4sbyl7aWYoIShvIGluc3RhbmNlb2Ygci5QQlJNYXRlcmlh
bCkpdGhyb3cgbmV3IEVycm9yKGUrIjogTWF0ZXJpYWwgdHlwZSBub3Qgc3VwcG9ydGVkIik7dmFy
IGE9bmV3IEFycmF5O3JldHVybiBvLm1ldGFsbGljPW51bGwsby5yb3VnaG5lc3M9bnVsbCxuLmRp
ZmZ1c2VGYWN0b3I/KG8uYWxiZWRvQ29sb3I9ci5Db2xvcjMuRnJvbUFycmF5KG4uZGlmZnVzZUZh
Y3Rvciksby5hbHBoYT1uLmRpZmZ1c2VGYWN0b3JbM10pOm8uYWxiZWRvQ29sb3I9ci5Db2xvcjMu
V2hpdGUoKSxvLnJlZmxlY3Rpdml0eUNvbG9yPW4uc3BlY3VsYXJGYWN0b3I/ci5Db2xvcjMuRnJv
bUFycmF5KG4uc3BlY3VsYXJGYWN0b3IpOnIuQ29sb3IzLldoaXRlKCksby5taWNyb1N1cmZhY2U9
bnVsbD09bi5nbG9zc2luZXNzRmFjdG9yPzE6bi5nbG9zc2luZXNzRmFjdG9yLG4uZGlmZnVzZVRl
eHR1cmUmJmEucHVzaCh0aGlzLl9sb2FkZXIubG9hZFRleHR1cmVJbmZvQXN5bmMoZSsiL2RpZmZ1
c2VUZXh0dXJlIixuLmRpZmZ1c2VUZXh0dXJlLGZ1bmN0aW9uKGUpe2UubmFtZT1vLm5hbWUrIiAo
RGlmZnVzZSkiLG8uYWxiZWRvVGV4dHVyZT1lfSkpLG4uc3BlY3VsYXJHbG9zc2luZXNzVGV4dHVy
ZSYmKGEucHVzaCh0aGlzLl9sb2FkZXIubG9hZFRleHR1cmVJbmZvQXN5bmMoZSsiL3NwZWN1bGFy
R2xvc3NpbmVzc1RleHR1cmUiLG4uc3BlY3VsYXJHbG9zc2luZXNzVGV4dHVyZSxmdW5jdGlvbihl
KXtlLm5hbWU9by5uYW1lKyIgKFNwZWN1bGFyIEdsb3NzaW5lc3MpIixvLnJlZmxlY3Rpdml0eVRl
eHR1cmU9ZX0pKSxvLnJlZmxlY3Rpdml0eVRleHR1cmUuaGFzQWxwaGE9ITAsby51c2VNaWNyb1N1
cmZhY2VGcm9tUmVmbGVjdGl2aXR5TWFwQWxwaGE9ITApLFByb21pc2UuYWxsKGEpLnRoZW4oZnVu
Y3Rpb24oKXt9KX0sZX0oKTtvLmIuUmVnaXN0ZXJFeHRlbnNpb24oZCxmdW5jdGlvbihlKXtyZXR1
cm4gbmV3IGgoZSl9KTt2YXIgcD0iS0hSX21hdGVyaWFsc191bmxpdCIsbT1mdW5jdGlvbigpe2Z1
bmN0aW9uIGUoZSl7dGhpcy5uYW1lPXAsdGhpcy5vcmRlcj0yMTAsdGhpcy5fbG9hZGVyPWUsdGhp
cy5lbmFibGVkPXRoaXMuX2xvYWRlci5pc0V4dGVuc2lvblVzZWQocCl9cmV0dXJuIGUucHJvdG90
eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fbG9hZGVyfSxlLnByb3RvdHlwZS5s
b2FkTWF0ZXJpYWxQcm9wZXJ0aWVzQXN5bmM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7cmV0
dXJuIG8uYi5Mb2FkRXh0ZW5zaW9uQXN5bmMoZSx0LHRoaXMubmFtZSxmdW5jdGlvbigpe3JldHVy
biByLl9sb2FkVW5saXRQcm9wZXJ0aWVzQXN5bmMoZSx0LG4pfSl9LGUucHJvdG90eXBlLl9sb2Fk
VW5saXRQcm9wZXJ0aWVzQXN5bmM9ZnVuY3Rpb24oZSx0LG4pe2lmKCEobiBpbnN0YW5jZW9mIHIu
UEJSTWF0ZXJpYWwpKXRocm93IG5ldyBFcnJvcihlKyI6IE1hdGVyaWFsIHR5cGUgbm90IHN1cHBv
cnRlZCIpO3ZhciBvPW5ldyBBcnJheTtuLnVubGl0PSEwO3ZhciBhPXQucGJyTWV0YWxsaWNSb3Vn
aG5lc3M7cmV0dXJuIGEmJihhLmJhc2VDb2xvckZhY3Rvcj8obi5hbGJlZG9Db2xvcj1yLkNvbG9y
My5Gcm9tQXJyYXkoYS5iYXNlQ29sb3JGYWN0b3IpLG4uYWxwaGE9YS5iYXNlQ29sb3JGYWN0b3Jb
M10pOm4uYWxiZWRvQ29sb3I9ci5Db2xvcjMuV2hpdGUoKSxhLmJhc2VDb2xvclRleHR1cmUmJm8u
cHVzaCh0aGlzLl9sb2FkZXIubG9hZFRleHR1cmVJbmZvQXN5bmMoZSsiL2Jhc2VDb2xvclRleHR1
cmUiLGEuYmFzZUNvbG9yVGV4dHVyZSxmdW5jdGlvbihlKXtlLm5hbWU9bi5uYW1lKyIgKEJhc2Ug
Q29sb3IpIixuLmFsYmVkb1RleHR1cmU9ZX0pKSksdC5kb3VibGVTaWRlZCYmKG4uYmFja0ZhY2VD
dWxsaW5nPSExLG4udHdvU2lkZWRMaWdodGluZz0hMCksdGhpcy5fbG9hZGVyLmxvYWRNYXRlcmlh
bEFscGhhUHJvcGVydGllcyhlLHQsbiksUHJvbWlzZS5hbGwobykudGhlbihmdW5jdGlvbigpe30p
fSxlfSgpO28uYi5SZWdpc3RlckV4dGVuc2lvbihwLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbShl
KX0pO3ZhciBfPSJLSFJfbWF0ZXJpYWxzX2NsZWFyY29hdCIseT1mdW5jdGlvbigpe2Z1bmN0aW9u
IGUoZSl7dGhpcy5uYW1lPV8sdGhpcy5vcmRlcj0yMjAsdGhpcy5fbG9hZGVyPWUsdGhpcy5lbmFi
bGVkPXRoaXMuX2xvYWRlci5pc0V4dGVuc2lvblVzZWQoXyl9cmV0dXJuIGUucHJvdG90eXBlLmRp
c3Bvc2U9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fbG9hZGVyfSxlLnByb3RvdHlwZS5sb2FkTWF0
ZXJpYWxQcm9wZXJ0aWVzQXN5bmM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7cmV0dXJuIG8u
Yi5Mb2FkRXh0ZW5zaW9uQXN5bmMoZSx0LHRoaXMubmFtZSxmdW5jdGlvbihvLGEpe3ZhciBpPW5l
dyBBcnJheTtyZXR1cm4gaS5wdXNoKHIuX2xvYWRlci5sb2FkTWF0ZXJpYWxQcm9wZXJ0aWVzQXN5
bmMoZSx0LG4pKSxpLnB1c2goci5fbG9hZENsZWFyQ29hdFByb3BlcnRpZXNBc3luYyhvLGEsbikp
LFByb21pc2UuYWxsKGkpLnRoZW4oZnVuY3Rpb24oKXt9KX0pfSxlLnByb3RvdHlwZS5fbG9hZENs
ZWFyQ29hdFByb3BlcnRpZXNBc3luYz1mdW5jdGlvbihlLHQsbil7aWYoIShuIGluc3RhbmNlb2Yg
ci5QQlJNYXRlcmlhbCkpdGhyb3cgbmV3IEVycm9yKGUrIjogTWF0ZXJpYWwgdHlwZSBub3Qgc3Vw
cG9ydGVkIik7dmFyIG89bmV3IEFycmF5O3JldHVybiBuLmNsZWFyQ29hdC5pc0VuYWJsZWQ9ITAs
bnVsbCE9dC5jbGVhcmNvYXRGYWN0b3I/bi5jbGVhckNvYXQuaW50ZW5zaXR5PXQuY2xlYXJjb2F0
RmFjdG9yOm4uY2xlYXJDb2F0LmludGVuc2l0eT0wLHQuY2xlYXJjb2F0VGV4dHVyZSYmby5wdXNo
KHRoaXMuX2xvYWRlci5sb2FkVGV4dHVyZUluZm9Bc3luYyhlKyIvY2xlYXJjb2F0VGV4dHVyZSIs
dC5jbGVhcmNvYXRUZXh0dXJlLGZ1bmN0aW9uKGUpe2UubmFtZT1uLm5hbWUrIiAoQ2xlYXJDb2F0
IEludGVuc2l0eSkiLG4uY2xlYXJDb2F0LnRleHR1cmU9ZX0pKSxudWxsIT10LmNsZWFyY29hdFJv
dWdobmVzc0ZhY3Rvcj9uLmNsZWFyQ29hdC5yb3VnaG5lc3M9dC5jbGVhcmNvYXRSb3VnaG5lc3NG
YWN0b3I6bi5jbGVhckNvYXQucm91Z2huZXNzPTAsdC5jbGVhcmNvYXRSb3VnaG5lc3NUZXh0dXJl
JiZvLnB1c2godGhpcy5fbG9hZGVyLmxvYWRUZXh0dXJlSW5mb0FzeW5jKGUrIi9jbGVhcmNvYXRS
b3VnaG5lc3NUZXh0dXJlIix0LmNsZWFyY29hdFJvdWdobmVzc1RleHR1cmUsZnVuY3Rpb24oZSl7
ZS5uYW1lPW4ubmFtZSsiIChDbGVhckNvYXQgUm91Z2huZXNzKSIsbi5jbGVhckNvYXQudGV4dHVy
ZT1lfSkpLHQuY2xlYXJjb2F0Tm9ybWFsVGV4dHVyZSYmKG8ucHVzaCh0aGlzLl9sb2FkZXIubG9h
ZFRleHR1cmVJbmZvQXN5bmMoZSsiL2NsZWFyY29hdE5vcm1hbFRleHR1cmUiLHQuY2xlYXJjb2F0
Tm9ybWFsVGV4dHVyZSxmdW5jdGlvbihlKXtlLm5hbWU9bi5uYW1lKyIgKENsZWFyQ29hdCBOb3Jt
YWwpIixuLmNsZWFyQ29hdC5idW1wVGV4dHVyZT1lfSkpLG4uaW52ZXJ0Tm9ybWFsTWFwWD0hbi5n
ZXRTY2VuZSgpLnVzZVJpZ2h0SGFuZGVkU3lzdGVtLG4uaW52ZXJ0Tm9ybWFsTWFwWT1uLmdldFNj
ZW5lKCkudXNlUmlnaHRIYW5kZWRTeXN0ZW0sbnVsbCE9dC5jbGVhcmNvYXROb3JtYWxUZXh0dXJl
LnNjYWxlJiYobi5jbGVhckNvYXQuYnVtcFRleHR1cmUubGV2ZWw9dC5jbGVhcmNvYXROb3JtYWxU
ZXh0dXJlLnNjYWxlKSksUHJvbWlzZS5hbGwobykudGhlbihmdW5jdGlvbigpe30pfSxlfSgpO28u
Yi5SZWdpc3RlckV4dGVuc2lvbihfLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgeShlKX0pO3ZhciB2
PSJLSFJfbWF0ZXJpYWxzX3NoZWVuIixBPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLm5h
bWU9dix0aGlzLm9yZGVyPTI0MCx0aGlzLl9sb2FkZXI9ZSx0aGlzLmVuYWJsZWQ9dGhpcy5fbG9h
ZGVyLmlzRXh0ZW5zaW9uVXNlZCh2KX1yZXR1cm4gZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlv
bigpe2RlbGV0ZSB0aGlzLl9sb2FkZXJ9LGUucHJvdG90eXBlLmxvYWRNYXRlcmlhbFByb3BlcnRp
ZXNBc3luYz1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztyZXR1cm4gby5iLkxvYWRFeHRlbnNp
b25Bc3luYyhlLHQsdGhpcy5uYW1lLGZ1bmN0aW9uKG8sYSl7dmFyIGk9bmV3IEFycmF5O3JldHVy
biBpLnB1c2goci5fbG9hZGVyLmxvYWRNYXRlcmlhbFByb3BlcnRpZXNBc3luYyhlLHQsbikpLGku
cHVzaChyLl9sb2FkU2hlZW5Qcm9wZXJ0aWVzQXN5bmMobyxhLG4pKSxQcm9taXNlLmFsbChpKS50
aGVuKGZ1bmN0aW9uKCl7fSl9KX0sZS5wcm90b3R5cGUuX2xvYWRTaGVlblByb3BlcnRpZXNBc3lu
Yz1mdW5jdGlvbihlLHQsbil7aWYoIShuIGluc3RhbmNlb2Ygci5QQlJNYXRlcmlhbCkpdGhyb3cg
bmV3IEVycm9yKGUrIjogTWF0ZXJpYWwgdHlwZSBub3Qgc3VwcG9ydGVkIik7dmFyIG89bmV3IEFy
cmF5O3JldHVybiBuLnNoZWVuLmlzRW5hYmxlZD0hMCxudWxsIT10LnNoZWVuRmFjdG9yP24uc2hl
ZW4uaW50ZW5zaXR5PXQuc2hlZW5GYWN0b3I6bi5zaGVlbi5pbnRlbnNpdHk9MCxudWxsIT10LnNo
ZWVuQ29sb3ImJihuLnNoZWVuLmNvbG9yPXIuQ29sb3IzLkZyb21BcnJheSh0LnNoZWVuQ29sb3Ip
KSx0LnNoZWVuVGV4dHVyZSYmby5wdXNoKHRoaXMuX2xvYWRlci5sb2FkVGV4dHVyZUluZm9Bc3lu
YyhlKyIvc2hlZW5UZXh0dXJlIix0LnNoZWVuVGV4dHVyZSxmdW5jdGlvbihlKXtlLm5hbWU9bi5u
YW1lKyIgKFNoZWVuIEludGVuc2l0eSkiLG4uc2hlZW4udGV4dHVyZT1lfSkpLFByb21pc2UuYWxs
KG8pLnRoZW4oZnVuY3Rpb24oKXt9KX0sZX0oKTtvLmIuUmVnaXN0ZXJFeHRlbnNpb24odixmdW5j
dGlvbihlKXtyZXR1cm4gbmV3IEEoZSl9KTt2YXIgYj0iS0hSX21hdGVyaWFsc19zcGVjdWxhciIs
Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5uYW1lPWIsdGhpcy5vcmRlcj0yMzAsdGhp
cy5fbG9hZGVyPWUsdGhpcy5lbmFibGVkPXRoaXMuX2xvYWRlci5pc0V4dGVuc2lvblVzZWQoYil9
cmV0dXJuIGUucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fbG9hZGVy
fSxlLnByb3RvdHlwZS5sb2FkTWF0ZXJpYWxQcm9wZXJ0aWVzQXN5bmM9ZnVuY3Rpb24oZSx0LG4p
e3ZhciByPXRoaXM7cmV0dXJuIG8uYi5Mb2FkRXh0ZW5zaW9uQXN5bmMoZSx0LHRoaXMubmFtZSxm
dW5jdGlvbihvLGEpe3ZhciBpPW5ldyBBcnJheTtyZXR1cm4gaS5wdXNoKHIuX2xvYWRlci5sb2Fk
TWF0ZXJpYWxQcm9wZXJ0aWVzQXN5bmMoZSx0LG4pKSxpLnB1c2goci5fbG9hZFNwZWN1bGFyUHJv
cGVydGllc0FzeW5jKG8sYSxuKSksUHJvbWlzZS5hbGwoaSkudGhlbihmdW5jdGlvbigpe30pfSl9
LGUucHJvdG90eXBlLl9sb2FkU3BlY3VsYXJQcm9wZXJ0aWVzQXN5bmM9ZnVuY3Rpb24oZSx0LG4p
e2lmKCEobiBpbnN0YW5jZW9mIHIuUEJSTWF0ZXJpYWwpKXRocm93IG5ldyBFcnJvcihlKyI6IE1h
dGVyaWFsIHR5cGUgbm90IHN1cHBvcnRlZCIpO3JldHVybiB2b2lkIDAhPT10LnNwZWN1bGFyRmFj
dG9yJiYobi5tZXRhbGxpY0YwRmFjdG9yPXQuc3BlY3VsYXJGYWN0b3IpLHQuc3BlY3VsYXJUZXh0
dXJlJiYobi51c2VNZXRhbGxpY0YwRmFjdG9yRnJvbU1ldGFsbGljVGV4dHVyZT0hMCksUHJvbWlz
ZS5yZXNvbHZlKCl9LGV9KCk7by5iLlJlZ2lzdGVyRXh0ZW5zaW9uKGIsZnVuY3Rpb24oZSl7cmV0
dXJuIG5ldyBnKGUpfSk7dmFyIFQ9IktIUl90ZXh0dXJlX3RyYW5zZm9ybSIseD1mdW5jdGlvbigp
e2Z1bmN0aW9uIGUoZSl7dGhpcy5uYW1lPVQsdGhpcy5fbG9hZGVyPWUsdGhpcy5lbmFibGVkPXRo
aXMuX2xvYWRlci5pc0V4dGVuc2lvblVzZWQoVCl9cmV0dXJuIGUucHJvdG90eXBlLmRpc3Bvc2U9
ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fbG9hZGVyfSxlLnByb3RvdHlwZS5sb2FkVGV4dHVyZUlu
Zm9Bc3luYz1mdW5jdGlvbihlLHQsbil7dmFyIGE9dGhpcztyZXR1cm4gby5iLkxvYWRFeHRlbnNp
b25Bc3luYyhlLHQsdGhpcy5uYW1lLGZ1bmN0aW9uKG8saSl7cmV0dXJuIGEuX2xvYWRlci5sb2Fk
VGV4dHVyZUluZm9Bc3luYyhlLHQsZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2Ygci5UZXh0
dXJlKSl0aHJvdyBuZXcgRXJyb3IobysiOiBUZXh0dXJlIHR5cGUgbm90IHN1cHBvcnRlZCIpO2ku
b2Zmc2V0JiYoZS51T2Zmc2V0PWkub2Zmc2V0WzBdLGUudk9mZnNldD1pLm9mZnNldFsxXSksZS51
Um90YXRpb25DZW50ZXI9MCxlLnZSb3RhdGlvbkNlbnRlcj0wLGkucm90YXRpb24mJihlLndBbmc9
LWkucm90YXRpb24pLGkuc2NhbGUmJihlLnVTY2FsZT1pLnNjYWxlWzBdLGUudlNjYWxlPWkuc2Nh
bGVbMV0pLG51bGwhPWkudGV4Q29vcmQmJihlLmNvb3JkaW5hdGVzSW5kZXg9aS50ZXhDb29yZCks
bihlKX0pfSl9LGV9KCk7by5iLlJlZ2lzdGVyRXh0ZW5zaW9uKFQsZnVuY3Rpb24oZSl7cmV0dXJu
IG5ldyB4KGUpfSk7dmFyIEw9Ik1TRlRfYXVkaW9fZW1pdHRlciIsRT1mdW5jdGlvbigpe2Z1bmN0
aW9uIGUoZSl7dGhpcy5uYW1lPUwsdGhpcy5fbG9hZGVyPWUsdGhpcy5lbmFibGVkPXRoaXMuX2xv
YWRlci5pc0V4dGVuc2lvblVzZWQoTCl9cmV0dXJuIGUucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rp
b24oKXtkZWxldGUgdGhpcy5fbG9hZGVyLGRlbGV0ZSB0aGlzLl9jbGlwcyxkZWxldGUgdGhpcy5f
ZW1pdHRlcnN9LGUucHJvdG90eXBlLm9uTG9hZGluZz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2xv
YWRlci5nbHRmLmV4dGVuc2lvbnM7aWYoZSYmZVt0aGlzLm5hbWVdKXt2YXIgdD1lW3RoaXMubmFt
ZV07dGhpcy5fY2xpcHM9dC5jbGlwcyx0aGlzLl9lbWl0dGVycz10LmVtaXR0ZXJzLG8uYS5Bc3Np
Z24odGhpcy5fY2xpcHMpLG8uYS5Bc3NpZ24odGhpcy5fZW1pdHRlcnMpfX0sZS5wcm90b3R5cGUu
bG9hZFNjZW5lQXN5bmM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiBvLmIuTG9hZEV4
dGVuc2lvbkFzeW5jKGUsdCx0aGlzLm5hbWUsZnVuY3Rpb24ocixhKXt2YXIgaT1uZXcgQXJyYXk7
aS5wdXNoKG4uX2xvYWRlci5sb2FkU2NlbmVBc3luYyhlLHQpKTtmb3IodmFyIHM9MCxsPWEuZW1p
dHRlcnM7czxsLmxlbmd0aDtzKyspe3ZhciB1PWxbc10sYz1vLmEuR2V0KHIrIi9lbWl0dGVycyIs
bi5fZW1pdHRlcnMsdSk7aWYobnVsbCE9Yy5yZWZEaXN0YW5jZXx8bnVsbCE9Yy5tYXhEaXN0YW5j
ZXx8bnVsbCE9Yy5yb2xsb2ZmRmFjdG9yfHxudWxsIT1jLmRpc3RhbmNlTW9kZWx8fG51bGwhPWMu
aW5uZXJBbmdsZXx8bnVsbCE9Yy5vdXRlckFuZ2xlKXRocm93IG5ldyBFcnJvcihyKyI6IERpcmVj
dGlvbiBvciBEaXN0YW5jZSBwcm9wZXJ0aWVzIGFyZSBub3QgYWxsb3dlZCBvbiBlbWl0dGVycyBh
dHRhY2hlZCB0byBhIHNjZW5lIik7aS5wdXNoKG4uX2xvYWRFbWl0dGVyQXN5bmMocisiL2VtaXR0
ZXJzLyIrYy5pbmRleCxjKSl9cmV0dXJuIFByb21pc2UuYWxsKGkpLnRoZW4oZnVuY3Rpb24oKXt9
KX0pfSxlLnByb3RvdHlwZS5sb2FkTm9kZUFzeW5jPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT10aGlz
O3JldHVybiBvLmIuTG9hZEV4dGVuc2lvbkFzeW5jKGUsdCx0aGlzLm5hbWUsZnVuY3Rpb24oZSxp
KXt2YXIgcz1uZXcgQXJyYXk7cmV0dXJuIGEuX2xvYWRlci5sb2FkTm9kZUFzeW5jKGUsdCxmdW5j
dGlvbih0KXtmb3IodmFyIGw9ZnVuY3Rpb24obil7dmFyIGk9by5hLkdldChlKyIvZW1pdHRlcnMi
LGEuX2VtaXR0ZXJzLG4pO3MucHVzaChhLl9sb2FkRW1pdHRlckFzeW5jKGUrIi9lbWl0dGVycy8i
K2kuaW5kZXgsaSkudGhlbihmdW5jdGlvbigpe2Zvcih2YXIgZT0wLG49aS5fYmFieWxvblNvdW5k
cztlPG4ubGVuZ3RoO2UrKyl7dmFyIG89bltlXTtvLmF0dGFjaFRvTWVzaCh0KSxudWxsPT1pLmlu
bmVyQW5nbGUmJm51bGw9PWkub3V0ZXJBbmdsZXx8KG8uc2V0TG9jYWxEaXJlY3Rpb25Ub01lc2go
ci5WZWN0b3IzLkZvcndhcmQoKSksby5zZXREaXJlY3Rpb25hbENvbmUoMipyLlRvb2xzLlRvRGVn
cmVlcyhudWxsPT1pLmlubmVyQW5nbGU/TWF0aC5QSTppLmlubmVyQW5nbGUpLDIqci5Ub29scy5U
b0RlZ3JlZXMobnVsbD09aS5vdXRlckFuZ2xlP01hdGguUEk6aS5vdXRlckFuZ2xlKSwwKSl9fSkp
fSx1PTAsYz1pLmVtaXR0ZXJzO3U8Yy5sZW5ndGg7dSsrKXtsKGNbdV0pfW4odCl9KS50aGVuKGZ1
bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChzKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGV9
KX0pfSl9LGUucHJvdG90eXBlLmxvYWRBbmltYXRpb25Bc3luYz1mdW5jdGlvbihlLHQpe3ZhciBu
PXRoaXM7cmV0dXJuIG8uYi5Mb2FkRXh0ZW5zaW9uQXN5bmMoZSx0LHRoaXMubmFtZSxmdW5jdGlv
bihyLGEpe3JldHVybiBuLl9sb2FkZXIubG9hZEFuaW1hdGlvbkFzeW5jKGUsdCkudGhlbihmdW5j
dGlvbihpKXt2YXIgcz1uZXcgQXJyYXk7by5hLkFzc2lnbihhLmV2ZW50cyk7Zm9yKHZhciBsPTAs
dT1hLmV2ZW50cztsPHUubGVuZ3RoO2wrKyl7dmFyIGM9dVtsXTtzLnB1c2gobi5fbG9hZEFuaW1h
dGlvbkV2ZW50QXN5bmMocisiL2V2ZW50cy8iK2MuaW5kZXgsZSx0LGMsaSkpfXJldHVybiBQcm9t
aXNlLmFsbChzKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KX0pfSl9LGUucHJvdG90eXBlLl9s
b2FkQ2xpcEFzeW5jPWZ1bmN0aW9uKGUsdCl7aWYodC5fb2JqZWN0VVJMKXJldHVybiB0Ll9vYmpl
Y3RVUkw7dmFyIG47aWYodC51cmkpbj10aGlzLl9sb2FkZXIubG9hZFVyaUFzeW5jKGUsdCx0LnVy
aSk7ZWxzZXt2YXIgcj1vLmEuR2V0KGUrIi9idWZmZXJWaWV3Iix0aGlzLl9sb2FkZXIuZ2x0Zi5i
dWZmZXJWaWV3cyx0LmJ1ZmZlclZpZXcpO249dGhpcy5fbG9hZGVyLmxvYWRCdWZmZXJWaWV3QXN5
bmMoIiMvYnVmZmVyVmlld3MvIityLmluZGV4LHIpfXJldHVybiB0Ll9vYmplY3RVUkw9bi50aGVu
KGZ1bmN0aW9uKGUpe3JldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtlXSx7dHlw
ZTp0Lm1pbWVUeXBlfSkpfSksdC5fb2JqZWN0VVJMfSxlLnByb3RvdHlwZS5fbG9hZEVtaXR0ZXJB
c3luYz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYodC5fYmFieWxvblNvdW5kcz10Ll9iYWJ5
bG9uU291bmRzfHxbXSwhdC5fYmFieWxvbkRhdGEpe2Zvcih2YXIgYT1uZXcgQXJyYXksaT10Lm5h
bWV8fCJlbWl0dGVyIit0LmluZGV4LHM9e2xvb3A6ITEsYXV0b3BsYXk6ITEsdm9sdW1lOm51bGw9
PXQudm9sdW1lPzE6dC52b2x1bWV9LGw9ZnVuY3Rpb24oZSl7dmFyIGw9IiMvZXh0ZW5zaW9ucy8i
K3UubmFtZSsiL2NsaXBzIixjPW8uYS5HZXQobCx1Ll9jbGlwcyx0LmNsaXBzW2VdLmNsaXApO2Eu
cHVzaCh1Ll9sb2FkQ2xpcEFzeW5jKGwrIi8iK3QuY2xpcHNbZV0uY2xpcCxjKS50aGVuKGZ1bmN0
aW9uKG8pe3ZhciBhPXQuX2JhYnlsb25Tb3VuZHNbZV09bmV3IHIuU291bmQoaSxvLG4uX2xvYWRl
ci5iYWJ5bG9uU2NlbmUsbnVsbCxzKTthLnJlZkRpc3RhbmNlPXQucmVmRGlzdGFuY2V8fDEsYS5t
YXhEaXN0YW5jZT10Lm1heERpc3RhbmNlfHwyNTYsYS5yb2xsb2ZmRmFjdG9yPXQucm9sbG9mZkZh
Y3Rvcnx8MSxhLmRpc3RhbmNlTW9kZWw9dC5kaXN0YW5jZU1vZGVsfHwiZXhwb25lbnRpYWwiLGEu
X3Bvc2l0aW9uSW5FbWl0dGVyU3BhY2U9ITB9KSl9LHU9dGhpcyxjPTA7Yzx0LmNsaXBzLmxlbmd0
aDtjKyspbChjKTt2YXIgZj1Qcm9taXNlLmFsbChhKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGU9dC5j
bGlwcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUud2VpZ2h0fHwxfSksbj1uZXcgci5XZWlnaHRl
ZFNvdW5kKHQubG9vcHx8ITEsdC5fYmFieWxvblNvdW5kcyxlKTt0LmlubmVyQW5nbGUmJihuLmRp
cmVjdGlvbmFsQ29uZUlubmVyQW5nbGU9MipyLlRvb2xzLlRvRGVncmVlcyh0LmlubmVyQW5nbGUp
KSx0Lm91dGVyQW5nbGUmJihuLmRpcmVjdGlvbmFsQ29uZU91dGVyQW5nbGU9MipyLlRvb2xzLlRv
RGVncmVlcyh0Lm91dGVyQW5nbGUpKSx0LnZvbHVtZSYmKG4udm9sdW1lPXQudm9sdW1lKSx0Ll9i
YWJ5bG9uRGF0YS5zb3VuZD1ufSk7dC5fYmFieWxvbkRhdGE9e2xvYWRlZDpmfX1yZXR1cm4gdC5f
YmFieWxvbkRhdGEubG9hZGVkfSxlLnByb3RvdHlwZS5fZ2V0RXZlbnRBY3Rpb249ZnVuY3Rpb24o
ZSx0LG4scixvKXtzd2l0Y2gobil7Y2FzZSJwbGF5IjpyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49
KG98fDApKyhlLXIpO3QucGxheShuKX07Y2FzZSJzdG9wIjpyZXR1cm4gZnVuY3Rpb24oZSl7dC5z
dG9wKCl9O2Nhc2UicGF1c2UiOnJldHVybiBmdW5jdGlvbihlKXt0LnBhdXNlKCl9O2RlZmF1bHQ6
dGhyb3cgbmV3IEVycm9yKGUrIjogVW5zdXBwb3J0ZWQgYWN0aW9uICIrbil9fSxlLnByb3RvdHlw
ZS5fbG9hZEFuaW1hdGlvbkV2ZW50QXN5bmM9ZnVuY3Rpb24oZSx0LG4sYSxpKXt2YXIgcz10aGlz
O2lmKDA9PWkudGFyZ2V0ZWRBbmltYXRpb25zLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KCk7dmFyIGw9aS50YXJnZXRlZEFuaW1hdGlvbnNbMF0sdT1hLmVtaXR0ZXIsYz1vLmEuR2V0KCIj
L2V4dGVuc2lvbnMvIit0aGlzLm5hbWUrIi9lbWl0dGVycyIsdGhpcy5fZW1pdHRlcnMsdSk7cmV0
dXJuIHRoaXMuX2xvYWRFbWl0dGVyQXN5bmMoZSxjKS50aGVuKGZ1bmN0aW9uKCl7dmFyIHQ9Yy5f
YmFieWxvbkRhdGEuc291bmQ7aWYodCl7dmFyIG49bmV3IHIuQW5pbWF0aW9uRXZlbnQoYS50aW1l
LHMuX2dldEV2ZW50QWN0aW9uKGUsdCxhLmFjdGlvbixhLnRpbWUsYS5zdGFydE9mZnNldCkpO2wu
YW5pbWF0aW9uLmFkZEV2ZW50KG4pLGkub25BbmltYXRpb25Hcm91cEVuZE9ic2VydmFibGUuYWRk
KGZ1bmN0aW9uKCl7dC5zdG9wKCl9KSxpLm9uQW5pbWF0aW9uR3JvdXBQYXVzZU9ic2VydmFibGUu
YWRkKGZ1bmN0aW9uKCl7dC5wYXVzZSgpfSl9fSl9LGV9KCk7by5iLlJlZ2lzdGVyRXh0ZW5zaW9u
KEwsZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBFKGUpfSk7dmFyIE89Ik1TRlRfbG9kIixNPWZ1bmN0
aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLm5hbWU9Tyx0aGlzLm9yZGVyPTEwMCx0aGlzLm1heExP
RHNUb0xvYWQ9MTAsdGhpcy5vbk5vZGVMT0RzTG9hZGVkT2JzZXJ2YWJsZT1uZXcgci5PYnNlcnZh
YmxlLHRoaXMub25NYXRlcmlhbExPRHNMb2FkZWRPYnNlcnZhYmxlPW5ldyByLk9ic2VydmFibGUs
dGhpcy5fbm9kZUluZGV4TE9EPW51bGwsdGhpcy5fbm9kZVNpZ25hbExPRHM9bmV3IEFycmF5LHRo
aXMuX25vZGVQcm9taXNlTE9Ecz1uZXcgQXJyYXksdGhpcy5fbWF0ZXJpYWxJbmRleExPRD1udWxs
LHRoaXMuX21hdGVyaWFsU2lnbmFsTE9Ecz1uZXcgQXJyYXksdGhpcy5fbWF0ZXJpYWxQcm9taXNl
TE9Ecz1uZXcgQXJyYXksdGhpcy5faW5kZXhMT0Q9bnVsbCx0aGlzLl9idWZmZXJMT0RzPW5ldyBB
cnJheSx0aGlzLl9sb2FkZXI9ZSx0aGlzLmVuYWJsZWQ9dGhpcy5fbG9hZGVyLmlzRXh0ZW5zaW9u
VXNlZChPKX1yZXR1cm4gZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuX2Rpc3Bv
c2VVbnVzZWRNYXRlcmlhbHMoKSxkZWxldGUgdGhpcy5fbG9hZGVyLHRoaXMuX25vZGVJbmRleExP
RD1udWxsLHRoaXMuX25vZGVTaWduYWxMT0RzLmxlbmd0aD0wLHRoaXMuX25vZGVQcm9taXNlTE9E
cy5sZW5ndGg9MCx0aGlzLl9tYXRlcmlhbEluZGV4TE9EPW51bGwsdGhpcy5fbWF0ZXJpYWxTaWdu
YWxMT0RzLmxlbmd0aD0wLHRoaXMuX21hdGVyaWFsUHJvbWlzZUxPRHMubGVuZ3RoPTAsdGhpcy5f
aW5kZXhMT0Q9bnVsbCx0aGlzLl9idWZmZXJMT0RzLmxlbmd0aD0wLHRoaXMub25NYXRlcmlhbExP
RHNMb2FkZWRPYnNlcnZhYmxlLmNsZWFyKCksdGhpcy5vbk5vZGVMT0RzTG9hZGVkT2JzZXJ2YWJs
ZS5jbGVhcigpfSxlLnByb3RvdHlwZS5vblJlYWR5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMs
dD1mdW5jdGlvbih0KXt2YXIgcj1Qcm9taXNlLmFsbChuLl9ub2RlUHJvbWlzZUxPRHNbdF0pLnRo
ZW4oZnVuY3Rpb24oKXswIT09dCYmZS5fbG9hZGVyLmVuZFBlcmZvcm1hbmNlQ291bnRlcigiTm9k
ZSBMT0QgIit0KSxlLl9sb2FkZXIubG9nKCJMb2FkZWQgbm9kZSBMT0QgIit0KSxlLm9uTm9kZUxP
RHNMb2FkZWRPYnNlcnZhYmxlLm5vdGlmeU9ic2VydmVycyh0KSx0IT09ZS5fbm9kZVByb21pc2VM
T0RzLmxlbmd0aC0xJiYoZS5fbG9hZGVyLnN0YXJ0UGVyZm9ybWFuY2VDb3VudGVyKCJOb2RlIExP
RCAiKyh0KzEpKSxlLl9ub2RlU2lnbmFsTE9Ec1t0XSYmZS5fbm9kZVNpZ25hbExPRHNbdF0ucmVz
b2x2ZSgpKX0pO24uX2xvYWRlci5fY29tcGxldGVQcm9taXNlcy5wdXNoKHIpfSxuPXRoaXMscj0w
O3I8dGhpcy5fbm9kZVByb21pc2VMT0RzLmxlbmd0aDtyKyspdChyKTt2YXIgbz1mdW5jdGlvbih0
KXt2YXIgbj1Qcm9taXNlLmFsbChhLl9tYXRlcmlhbFByb21pc2VMT0RzW3RdKS50aGVuKGZ1bmN0
aW9uKCl7MCE9PXQmJmUuX2xvYWRlci5lbmRQZXJmb3JtYW5jZUNvdW50ZXIoIk1hdGVyaWFsIExP
RCAiK3QpLGUuX2xvYWRlci5sb2coIkxvYWRlZCBtYXRlcmlhbCBMT0QgIit0KSxlLm9uTWF0ZXJp
YWxMT0RzTG9hZGVkT2JzZXJ2YWJsZS5ub3RpZnlPYnNlcnZlcnModCksdCE9PWUuX21hdGVyaWFs
UHJvbWlzZUxPRHMubGVuZ3RoLTEmJihlLl9sb2FkZXIuc3RhcnRQZXJmb3JtYW5jZUNvdW50ZXIo
Ik1hdGVyaWFsIExPRCAiKyh0KzEpKSxlLl9tYXRlcmlhbFNpZ25hbExPRHNbdF0mJmUuX21hdGVy
aWFsU2lnbmFsTE9Ec1t0XS5yZXNvbHZlKCkpfSk7YS5fbG9hZGVyLl9jb21wbGV0ZVByb21pc2Vz
LnB1c2gobil9LGE9dGhpcztmb3Iocj0wO3I8dGhpcy5fbWF0ZXJpYWxQcm9taXNlTE9Ecy5sZW5n
dGg7cisrKW8ocik7Zm9yKHI9MTtyPHRoaXMuX2J1ZmZlckxPRHMubGVuZ3RoO3IrKyl0aGlzLl9s
b2FkQnVmZmVyTE9EKHIpfSxlLnByb3RvdHlwZS5sb2FkTm9kZUFzeW5jPWZ1bmN0aW9uKGUsdCxu
KXt2YXIgYT10aGlzO3JldHVybiBvLmIuTG9hZEV4dGVuc2lvbkFzeW5jKGUsdCx0aGlzLm5hbWUs
ZnVuY3Rpb24oZSxuKXt2YXIgbyxpPWEuX2dldExPRHMoZSx0LGEuX2xvYWRlci5nbHRmLm5vZGVz
LG4uaWRzKTthLl9sb2FkZXIubG9nT3BlbigiIitlKTtmb3IodmFyIHM9ZnVuY3Rpb24oZSl7dmFy
IHQ9aVtlXTthLl9pbmRleExPRD1lLDAhPT1lJiYoYS5fbm9kZUluZGV4TE9EPWUsYS5fbm9kZVNp
Z25hbExPRHNbZV09YS5fbm9kZVNpZ25hbExPRHNbZV18fG5ldyByLkRlZmVycmVkKTt2YXIgbj1h
Ll9sb2FkZXIubG9hZE5vZGVBc3luYygiIy9ub2Rlcy8iK3QuaW5kZXgsdCxmdW5jdGlvbihlKXtl
LnNldEVuYWJsZWQoITEpfSkudGhlbihmdW5jdGlvbih0KXtpZigwIT09ZSl7dmFyIG49aVtlLTFd
O24uX2JhYnlsb25UcmFuc2Zvcm1Ob2RlJiYobi5fYmFieWxvblRyYW5zZm9ybU5vZGUuZGlzcG9z
ZSgpLGRlbGV0ZSBuLl9iYWJ5bG9uVHJhbnNmb3JtTm9kZSxhLl9kaXNwb3NlVW51c2VkTWF0ZXJp
YWxzKCkpfXJldHVybiB0LnNldEVuYWJsZWQoITApLHR9KTswPT09ZT8obz1uLDAhPT1hLl9idWZm
ZXJMT0RzLmxlbmd0aCYmYS5fbG9hZEJ1ZmZlckxPRCgwKSk6YS5fbm9kZUluZGV4TE9EPW51bGws
YS5faW5kZXhMT0Q9bnVsbCxhLl9ub2RlUHJvbWlzZUxPRHNbZV09YS5fbm9kZVByb21pc2VMT0Rz
W2VdfHxbXSxhLl9ub2RlUHJvbWlzZUxPRHNbZV0ucHVzaChuKX0sbD0wO2w8aS5sZW5ndGg7bCsr
KXMobCk7cmV0dXJuIGEuX2xvYWRlci5sb2dDbG9zZSgpLG99KX0sZS5wcm90b3R5cGUuX2xvYWRN
YXRlcmlhbEFzeW5jPWZ1bmN0aW9uKGUsdCxuLHIsYSl7dmFyIGk9dGhpcztyZXR1cm4gdGhpcy5f
aW5kZXhMT0Q/bnVsbDpvLmIuTG9hZEV4dGVuc2lvbkFzeW5jKGUsdCx0aGlzLm5hbWUsZnVuY3Rp
b24oZSxvKXt2YXIgcyxsPWkuX2dldExPRHMoZSx0LGkuX2xvYWRlci5nbHRmLm1hdGVyaWFscyxv
Lmlkcyk7aS5fbG9hZGVyLmxvZ09wZW4oIiIrZSk7Zm9yKHZhciB1PWZ1bmN0aW9uKGUpe3ZhciB0
PWxbZV07aS5faW5kZXhMT0Q9ZSwwIT09ZSYmKGkuX21hdGVyaWFsSW5kZXhMT0Q9ZSk7dmFyIG89
aS5fbG9hZGVyLl9sb2FkTWF0ZXJpYWxBc3luYygiIy9tYXRlcmlhbHMvIit0LmluZGV4LHQsbixy
LGZ1bmN0aW9uKHQpezA9PT1lJiZhKHQpfSkudGhlbihmdW5jdGlvbih0KXtpZigwIT09ZSl7YSh0
KTt2YXIgbj1sW2UtMV0uX2RhdGE7bltyXSYmKG5bcl0uYmFieWxvbk1hdGVyaWFsLmRpc3Bvc2Uo
KSxkZWxldGUgbltyXSl9cmV0dXJuIHR9KTswPT09ZT8ocz1vLDAhPT1pLl9idWZmZXJMT0RzLmxl
bmd0aCYmaS5fbG9hZEJ1ZmZlckxPRCgwKSk6aS5fbWF0ZXJpYWxJbmRleExPRD1udWxsLGkuX2lu
ZGV4TE9EPW51bGwsaS5fbWF0ZXJpYWxQcm9taXNlTE9Ec1tlXT1pLl9tYXRlcmlhbFByb21pc2VM
T0RzW2VdfHxbXSxpLl9tYXRlcmlhbFByb21pc2VMT0RzW2VdLnB1c2gobyl9LGM9MDtjPGwubGVu
Z3RoO2MrKyl1KGMpO3JldHVybiBpLl9sb2FkZXIubG9nQ2xvc2UoKSxzfSl9LGUucHJvdG90eXBl
Ll9sb2FkVXJpQXN5bmM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXRoaXM7aWYobnVsbCE9PXRoaXMu
X21hdGVyaWFsSW5kZXhMT0Qpe3RoaXMuX2xvYWRlci5sb2coImRlZmVycmVkIik7dmFyIGE9dGhp
cy5fbWF0ZXJpYWxJbmRleExPRC0xO3JldHVybiB0aGlzLl9tYXRlcmlhbFNpZ25hbExPRHNbYV09
dGhpcy5fbWF0ZXJpYWxTaWduYWxMT0RzW2FdfHxuZXcgci5EZWZlcnJlZCx0aGlzLl9tYXRlcmlh
bFNpZ25hbExPRHNbYV0ucHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG8uX2xvYWRlci5s
b2FkVXJpQXN5bmMoZSx0LG4pfSl9aWYobnVsbCE9PXRoaXMuX25vZGVJbmRleExPRCl7dGhpcy5f
bG9hZGVyLmxvZygiZGVmZXJyZWQiKTthPXRoaXMuX25vZGVJbmRleExPRC0xO3JldHVybiB0aGlz
Ll9ub2RlU2lnbmFsTE9Ec1thXT10aGlzLl9ub2RlU2lnbmFsTE9Ec1thXXx8bmV3IHIuRGVmZXJy
ZWQsdGhpcy5fbm9kZVNpZ25hbExPRHNbdGhpcy5fbm9kZUluZGV4TE9ELTFdLnByb21pc2UudGhl
bihmdW5jdGlvbigpe3JldHVybiBvLl9sb2FkZXIubG9hZFVyaUFzeW5jKGUsdCxuKX0pfXJldHVy
biBudWxsfSxlLnByb3RvdHlwZS5sb2FkQnVmZmVyQXN5bmM9ZnVuY3Rpb24oZSx0LG4sbyl7aWYo
dGhpcy5fbG9hZGVyLnBhcmVudC51c2VSYW5nZVJlcXVlc3RzJiYhdC51cmkpe2lmKCF0aGlzLl9s
b2FkZXIuYmluKXRocm93IG5ldyBFcnJvcihlKyI6IFVyaSBpcyBtaXNzaW5nIG9yIHRoZSBiaW5h
cnkgZ2xURiBpcyBtaXNzaW5nIGl0cyBiaW5hcnkgY2h1bmsiKTt2YXIgYT10aGlzLl9pbmRleExP
RHx8MCxpPW4scz1pK28tMSxsPXRoaXMuX2J1ZmZlckxPRHNbYV07cmV0dXJuIGw/KGwuc3RhcnQ9
TWF0aC5taW4obC5zdGFydCxpKSxsLmVuZD1NYXRoLm1heChsLmVuZCxzKSk6KGw9e3N0YXJ0Omks
ZW5kOnMsbG9hZGVkOm5ldyByLkRlZmVycmVkfSx0aGlzLl9idWZmZXJMT0RzW2FdPWwpLGwubG9h
ZGVkLnByb21pc2UudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZS5idWZm
ZXIsZS5ieXRlT2Zmc2V0K24tbC5zdGFydCxvKX0pfXJldHVybiBudWxsfSxlLnByb3RvdHlwZS5f
bG9hZEJ1ZmZlckxPRD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9idWZmZXJMT0RzW2VdO3RoaXMu
X2xvYWRlci5iaW4ucmVhZEFzeW5jKHQuc3RhcnQsdC5lbmQtdC5zdGFydCsxKS50aGVuKGZ1bmN0
aW9uKGUpe3QubG9hZGVkLnJlc29sdmUoZSl9LGZ1bmN0aW9uKGUpe3QubG9hZGVkLnJlamVjdChl
KX0pfSxlLnByb3RvdHlwZS5fZ2V0TE9Ecz1mdW5jdGlvbihlLHQsbixyKXtpZih0aGlzLm1heExP
RHNUb0xvYWQ8PTApdGhyb3cgbmV3IEVycm9yKCJtYXhMT0RzVG9Mb2FkIG11c3QgYmUgZ3JlYXRl
ciB0aGFuIHplcm8iKTtmb3IodmFyIGE9bmV3IEFycmF5LGk9ci5sZW5ndGgtMTtpPj0wO2ktLSlp
ZihhLnB1c2goby5hLkdldChlKyIvaWRzLyIrcltpXSxuLHJbaV0pKSxhLmxlbmd0aD09PXRoaXMu
bWF4TE9Ec1RvTG9hZClyZXR1cm4gYTtyZXR1cm4gYS5wdXNoKHQpLGF9LGUucHJvdG90eXBlLl9k
aXNwb3NlVW51c2VkTWF0ZXJpYWxzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fbG9hZGVyLmdsdGYu
bWF0ZXJpYWxzO2lmKGUpZm9yKHZhciB0PTAsbj1lO3Q8bi5sZW5ndGg7dCsrKXt2YXIgcj1uW3Rd
O2lmKHIuX2RhdGEpe3ZhciBvPWZ1bmN0aW9uKGUpe3ZhciB0PXIuX2RhdGFbZV07dC5iYWJ5bG9u
TWVzaGVzLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hdGVyaWFsIT09dC5iYWJ5bG9uTWF0
ZXJpYWx9KSYmKHQuYmFieWxvbk1hdGVyaWFsLmRpc3Bvc2UoITEsITApLGRlbGV0ZSByLl9kYXRh
W2VdKX07Zm9yKHZhciBhIGluIHIuX2RhdGEpbyhhKX19fSxlfSgpO28uYi5SZWdpc3RlckV4dGVu
c2lvbihPLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgTShlKX0pO3ZhciBTPSJNU0ZUX21pbmVjcmFm
dE1lc2giLHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMubmFtZT1TLHRoaXMuX2xvYWRl
cj1lLHRoaXMuZW5hYmxlZD10aGlzLl9sb2FkZXIuaXNFeHRlbnNpb25Vc2VkKFMpfXJldHVybiBl
LnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuX2xvYWRlcn0sZS5wcm90
b3R5cGUubG9hZE1hdGVyaWFsUHJvcGVydGllc0FzeW5jPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT10
aGlzO3JldHVybiBvLmIuTG9hZEV4dHJhQXN5bmMoZSx0LHRoaXMubmFtZSxmdW5jdGlvbihvLGkp
e2lmKGkpe2lmKCEobiBpbnN0YW5jZW9mIHIuUEJSTWF0ZXJpYWwpKXRocm93IG5ldyBFcnJvcihv
KyI6IE1hdGVyaWFsIHR5cGUgbm90IHN1cHBvcnRlZCIpO3ZhciBzPWEuX2xvYWRlci5sb2FkTWF0
ZXJpYWxQcm9wZXJ0aWVzQXN5bmMoZSx0LG4pO3JldHVybiBuLm5lZWRBbHBoYUJsZW5kaW5nKCkm
JihuLmZvcmNlRGVwdGhXcml0ZT0hMCxuLnNlcGFyYXRlQ3VsbGluZ1Bhc3M9ITApLG4uYmFja0Zh
Y2VDdWxsaW5nPW4uZm9yY2VEZXB0aFdyaXRlLG4udHdvU2lkZWRMaWdodGluZz0hMCxzfXJldHVy
biBudWxsfSl9LGV9KCk7by5iLlJlZ2lzdGVyRXh0ZW5zaW9uKFMsZnVuY3Rpb24oZSl7cmV0dXJu
IG5ldyB3KGUpfSk7dmFyIE49Ik1TRlRfc1JHQkZhY3RvcnMiLFA9ZnVuY3Rpb24oKXtmdW5jdGlv
biBlKGUpe3RoaXMubmFtZT1OLHRoaXMuX2xvYWRlcj1lLHRoaXMuZW5hYmxlZD10aGlzLl9sb2Fk
ZXIuaXNFeHRlbnNpb25Vc2VkKE4pfXJldHVybiBlLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9u
KCl7ZGVsZXRlIHRoaXMuX2xvYWRlcn0sZS5wcm90b3R5cGUubG9hZE1hdGVyaWFsUHJvcGVydGll
c0FzeW5jPWZ1bmN0aW9uKGUsdCxuKXt2YXIgYT10aGlzO3JldHVybiBvLmIuTG9hZEV4dHJhQXN5
bmMoZSx0LHRoaXMubmFtZSxmdW5jdGlvbihvLGkpe2lmKGkpe2lmKCEobiBpbnN0YW5jZW9mIHIu
UEJSTWF0ZXJpYWwpKXRocm93IG5ldyBFcnJvcihvKyI6IE1hdGVyaWFsIHR5cGUgbm90IHN1cHBv
cnRlZCIpO3ZhciBzPWEuX2xvYWRlci5sb2FkTWF0ZXJpYWxQcm9wZXJ0aWVzQXN5bmMoZSx0LG4p
O3JldHVybiBuLmFsYmVkb1RleHR1cmV8fG4uYWxiZWRvQ29sb3IudG9MaW5lYXJTcGFjZVRvUmVm
KG4uYWxiZWRvQ29sb3IpLG4ucmVmbGVjdGl2aXR5VGV4dHVyZXx8bi5yZWZsZWN0aXZpdHlDb2xv
ci50b0xpbmVhclNwYWNlVG9SZWYobi5yZWZsZWN0aXZpdHlDb2xvciksc31yZXR1cm4gbnVsbH0p
fSxlfSgpO28uYi5SZWdpc3RlckV4dGVuc2lvbihOLGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUChl
KX0pO3ZhciBDPSJFeHRyYXNBc01ldGFkYXRhIixSPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0
aGlzLm5hbWU9Qyx0aGlzLmVuYWJsZWQ9ITAsdGhpcy5fbG9hZGVyPWV9cmV0dXJuIGUucHJvdG90
eXBlLl9hc3NpZ25FeHRyYXM9ZnVuY3Rpb24oZSx0KXtpZih0LmV4dHJhcyYmT2JqZWN0LmtleXMo
dC5leHRyYXMpLmxlbmd0aD4wKXt2YXIgbj1lLm1ldGFkYXRhPWUubWV0YWRhdGF8fHt9OyhuLmds
dGY9bi5nbHRmfHx7fSkuZXh0cmFzPXQuZXh0cmFzfX0sZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5j
dGlvbigpe2RlbGV0ZSB0aGlzLl9sb2FkZXJ9LGUucHJvdG90eXBlLmxvYWROb2RlQXN5bmM9ZnVu
Y3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7cmV0dXJuIHRoaXMuX2xvYWRlci5sb2FkTm9kZUFzeW5j
KGUsdCxmdW5jdGlvbihlKXtyLl9hc3NpZ25FeHRyYXMoZSx0KSxuKGUpfSl9LGUucHJvdG90eXBl
LmxvYWRDYW1lcmFBc3luYz1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5f
bG9hZGVyLmxvYWRDYW1lcmFBc3luYyhlLHQsZnVuY3Rpb24oZSl7ci5fYXNzaWduRXh0cmFzKGUs
dCksbihlKX0pfSxlLnByb3RvdHlwZS5jcmVhdGVNYXRlcmlhbD1mdW5jdGlvbihlLHQsbil7dmFy
IHI9dGhpcy5fbG9hZGVyLmNyZWF0ZU1hdGVyaWFsKGUsdCxuKTtyZXR1cm4gdGhpcy5fYXNzaWdu
RXh0cmFzKHIsdCkscn0sZX0oKTtvLmIuUmVnaXN0ZXJFeHRlbnNpb24oQyxmdW5jdGlvbihlKXty
ZXR1cm4gbmV3IFIoZSl9KSxuLmQodCwiRVhUX2xpZ2h0c19pbWFnZV9iYXNlZCIsZnVuY3Rpb24o
KXtyZXR1cm4gaX0pLG4uZCh0LCJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiIsZnVuY3Rpb24o
KXtyZXR1cm4gbH0pLG4uZCh0LCJLSFJfbGlnaHRzIixmdW5jdGlvbigpe3JldHVybiBmfSksbi5k
KHQsIktIUl9tYXRlcmlhbHNfcGJyU3BlY3VsYXJHbG9zc2luZXNzIixmdW5jdGlvbigpe3JldHVy
biBofSksbi5kKHQsIktIUl9tYXRlcmlhbHNfdW5saXQiLGZ1bmN0aW9uKCl7cmV0dXJuIG19KSxu
LmQodCwiS0hSX21hdGVyaWFsc19jbGVhcmNvYXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSxuLmQo
dCwiS0hSX21hdGVyaWFsc19zaGVlbiIsZnVuY3Rpb24oKXtyZXR1cm4gQX0pLG4uZCh0LCJLSFJf
bWF0ZXJpYWxzX3NwZWN1bGFyIixmdW5jdGlvbigpe3JldHVybiBnfSksbi5kKHQsIktIUl90ZXh0
dXJlX3RyYW5zZm9ybSIsZnVuY3Rpb24oKXtyZXR1cm4geH0pLG4uZCh0LCJNU0ZUX2F1ZGlvX2Vt
aXR0ZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIEV9KSxuLmQodCwiTVNGVF9sb2QiLGZ1bmN0aW9uKCl7
cmV0dXJuIE19KSxuLmQodCwiTVNGVF9taW5lY3JhZnRNZXNoIixmdW5jdGlvbigpe3JldHVybiB3
fSksbi5kKHQsIk1TRlRfc1JHQkZhY3RvcnMiLGZ1bmN0aW9uKCl7cmV0dXJuIFB9KSxuLmQodCwi
RXh0cmFzQXNNZXRhZGF0YSIsZnVuY3Rpb24oKXtyZXR1cm4gUn0pfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO24ucih0KTt2YXIgcj1uKDEpO24uZCh0LCJBcnJheUl0ZW0iLGZ1bmN0aW9u
KCl7cmV0dXJuIHIuYX0pLG4uZCh0LCJHTFRGTG9hZGVyIixmdW5jdGlvbigpe3JldHVybiByLmJ9
KTt2YXIgbz1uKDQpO24uZCh0LCJFWFRfbGlnaHRzX2ltYWdlX2Jhc2VkIixmdW5jdGlvbigpe3Jl
dHVybiBvLkVYVF9saWdodHNfaW1hZ2VfYmFzZWR9KSxuLmQodCwiS0hSX2RyYWNvX21lc2hfY29t
cHJlc3Npb24iLGZ1bmN0aW9uKCl7cmV0dXJuIG8uS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb259
KSxuLmQodCwiS0hSX2xpZ2h0cyIsZnVuY3Rpb24oKXtyZXR1cm4gby5LSFJfbGlnaHRzfSksbi5k
KHQsIktIUl9tYXRlcmlhbHNfcGJyU3BlY3VsYXJHbG9zc2luZXNzIixmdW5jdGlvbigpe3JldHVy
biBvLktIUl9tYXRlcmlhbHNfcGJyU3BlY3VsYXJHbG9zc2luZXNzfSksbi5kKHQsIktIUl9tYXRl
cmlhbHNfdW5saXQiLGZ1bmN0aW9uKCl7cmV0dXJuIG8uS0hSX21hdGVyaWFsc191bmxpdH0pLG4u
ZCh0LCJLSFJfbWF0ZXJpYWxzX2NsZWFyY29hdCIsZnVuY3Rpb24oKXtyZXR1cm4gby5LSFJfbWF0
ZXJpYWxzX2NsZWFyY29hdH0pLG4uZCh0LCJLSFJfbWF0ZXJpYWxzX3NoZWVuIixmdW5jdGlvbigp
e3JldHVybiBvLktIUl9tYXRlcmlhbHNfc2hlZW59KSxuLmQodCwiS0hSX21hdGVyaWFsc19zcGVj
dWxhciIsZnVuY3Rpb24oKXtyZXR1cm4gby5LSFJfbWF0ZXJpYWxzX3NwZWN1bGFyfSksbi5kKHQs
IktIUl90ZXh0dXJlX3RyYW5zZm9ybSIsZnVuY3Rpb24oKXtyZXR1cm4gby5LSFJfdGV4dHVyZV90
cmFuc2Zvcm19KSxuLmQodCwiTVNGVF9hdWRpb19lbWl0dGVyIixmdW5jdGlvbigpe3JldHVybiBv
Lk1TRlRfYXVkaW9fZW1pdHRlcn0pLG4uZCh0LCJNU0ZUX2xvZCIsZnVuY3Rpb24oKXtyZXR1cm4g
by5NU0ZUX2xvZH0pLG4uZCh0LCJNU0ZUX21pbmVjcmFmdE1lc2giLGZ1bmN0aW9uKCl7cmV0dXJu
IG8uTVNGVF9taW5lY3JhZnRNZXNofSksbi5kKHQsIk1TRlRfc1JHQkZhY3RvcnMiLGZ1bmN0aW9u
KCl7cmV0dXJuIG8uTVNGVF9zUkdCRmFjdG9yc30pLG4uZCh0LCJFeHRyYXNBc01ldGFkYXRhIixm
dW5jdGlvbigpe3JldHVybiBvLkV4dHJhc0FzTWV0YWRhdGF9KX0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtuLnIodCk7CisvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0NvcHlyaWdodCAo
YykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorTGljZW5zZWQg
dW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlv
dSBtYXkgbm90IHVzZQordGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExp
Y2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUKK0xpY2Vuc2UgYXQgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1RISVMgQ09ERSBJUyBQUk9WSURF
RCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBP
RiBBTlkKK0tJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VU
IExJTUlUQVRJT04gQU5ZIElNUExJRUQKK1dBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRM
RSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsCitNRVJDSEFOVEFCTElUWSBPUiBO
T04tSU5GUklOR0VNRU5ULgorCitTZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZv
ciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKK2FuZCBsaW1pdGF0aW9u
cyB1bmRlciB0aGUgTGljZW5zZS4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCit2YXIgcj1mdW5j
dGlvbihlLHQpe3JldHVybihyPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1p
bnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihl
LHQpe2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihlW25dPXRbbl0pfSkoZSx0
KX07ZnVuY3Rpb24gbyhlLHQpe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9cihlLHQp
LGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KG4ucHJvdG90eXBlPXQucHJv
dG90eXBlLG5ldyBuKX12YXIgYSxpLHMsbCx1LGMsZixkOyFmdW5jdGlvbihlKXtlW2UuQllURT01
MTIwXT0iQllURSIsZVtlLlVOU0lHTkVEX0JZVEU9NTEyMV09IlVOU0lHTkVEX0JZVEUiLGVbZS5T
SE9SVD01MTIyXT0iU0hPUlQiLGVbZS5VTlNJR05FRF9TSE9SVD01MTIzXT0iVU5TSUdORURfU0hP
UlQiLGVbZS5GTE9BVD01MTI2XT0iRkxPQVQifShhfHwoYT17fSkpLGZ1bmN0aW9uKGUpe2VbZS5G
UkFHTUVOVD0zNTYzMl09IkZSQUdNRU5UIixlW2UuVkVSVEVYPTM1NjMzXT0iVkVSVEVYIn0oaXx8
KGk9e30pKSxmdW5jdGlvbihlKXtlW2UuQllURT01MTIwXT0iQllURSIsZVtlLlVOU0lHTkVEX0JZ
VEU9NTEyMV09IlVOU0lHTkVEX0JZVEUiLGVbZS5TSE9SVD01MTIyXT0iU0hPUlQiLGVbZS5VTlNJ
R05FRF9TSE9SVD01MTIzXT0iVU5TSUdORURfU0hPUlQiLGVbZS5JTlQ9NTEyNF09IklOVCIsZVtl
LlVOU0lHTkVEX0lOVD01MTI1XT0iVU5TSUdORURfSU5UIixlW2UuRkxPQVQ9NTEyNl09IkZMT0FU
IixlW2UuRkxPQVRfVkVDMj0zNTY2NF09IkZMT0FUX1ZFQzIiLGVbZS5GTE9BVF9WRUMzPTM1NjY1
XT0iRkxPQVRfVkVDMyIsZVtlLkZMT0FUX1ZFQzQ9MzU2NjZdPSJGTE9BVF9WRUM0IixlW2UuSU5U
X1ZFQzI9MzU2NjddPSJJTlRfVkVDMiIsZVtlLklOVF9WRUMzPTM1NjY4XT0iSU5UX1ZFQzMiLGVb
ZS5JTlRfVkVDND0zNTY2OV09IklOVF9WRUM0IixlW2UuQk9PTD0zNTY3MF09IkJPT0wiLGVbZS5C
T09MX1ZFQzI9MzU2NzFdPSJCT09MX1ZFQzIiLGVbZS5CT09MX1ZFQzM9MzU2NzJdPSJCT09MX1ZF
QzMiLGVbZS5CT09MX1ZFQzQ9MzU2NzNdPSJCT09MX1ZFQzQiLGVbZS5GTE9BVF9NQVQyPTM1Njc0
XT0iRkxPQVRfTUFUMiIsZVtlLkZMT0FUX01BVDM9MzU2NzVdPSJGTE9BVF9NQVQzIixlW2UuRkxP
QVRfTUFUND0zNTY3Nl09IkZMT0FUX01BVDQiLGVbZS5TQU1QTEVSXzJEPTM1Njc4XT0iU0FNUExF
Ul8yRCJ9KHN8fChzPXt9KSksZnVuY3Rpb24oZSl7ZVtlLkNMQU1QX1RPX0VER0U9MzMwNzFdPSJD
TEFNUF9UT19FREdFIixlW2UuTUlSUk9SRURfUkVQRUFUPTMzNjQ4XT0iTUlSUk9SRURfUkVQRUFU
IixlW2UuUkVQRUFUPTEwNDk3XT0iUkVQRUFUIn0obHx8KGw9e30pKSxmdW5jdGlvbihlKXtlW2Uu
TkVBUkVTVD05NzI4XT0iTkVBUkVTVCIsZVtlLkxJTkVBUj05NzI4XT0iTElORUFSIixlW2UuTkVB
UkVTVF9NSVBNQVBfTkVBUkVTVD05OTg0XT0iTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCIsZVtlLkxJ
TkVBUl9NSVBNQVBfTkVBUkVTVD05OTg1XT0iTElORUFSX01JUE1BUF9ORUFSRVNUIixlW2UuTkVB
UkVTVF9NSVBNQVBfTElORUFSPTk5ODZdPSJORUFSRVNUX01JUE1BUF9MSU5FQVIiLGVbZS5MSU5F
QVJfTUlQTUFQX0xJTkVBUj05OTg3XT0iTElORUFSX01JUE1BUF9MSU5FQVIifSh1fHwodT17fSkp
LGZ1bmN0aW9uKGUpe2VbZS5BTFBIQT02NDA2XT0iQUxQSEEiLGVbZS5SR0I9NjQwN109IlJHQiIs
ZVtlLlJHQkE9NjQwOF09IlJHQkEiLGVbZS5MVU1JTkFOQ0U9NjQwOV09IkxVTUlOQU5DRSIsZVtl
LkxVTUlOQU5DRV9BTFBIQT02NDEwXT0iTFVNSU5BTkNFX0FMUEhBIn0oY3x8KGM9e30pKSxmdW5j
dGlvbihlKXtlW2UuRlJPTlQ9MTAyOF09IkZST05UIixlW2UuQkFDSz0xMDI5XT0iQkFDSyIsZVtl
LkZST05UX0FORF9CQUNLPTEwMzJdPSJGUk9OVF9BTkRfQkFDSyJ9KGZ8fChmPXt9KSksZnVuY3Rp
b24oZSl7ZVtlLlpFUk89MF09IlpFUk8iLGVbZS5PTkU9MV09Ik9ORSIsZVtlLlNSQ19DT0xPUj03
NjhdPSJTUkNfQ09MT1IiLGVbZS5PTkVfTUlOVVNfU1JDX0NPTE9SPTc2OV09Ik9ORV9NSU5VU19T
UkNfQ09MT1IiLGVbZS5EU1RfQ09MT1I9Nzc0XT0iRFNUX0NPTE9SIixlW2UuT05FX01JTlVTX0RT
VF9DT0xPUj03NzVdPSJPTkVfTUlOVVNfRFNUX0NPTE9SIixlW2UuU1JDX0FMUEhBPTc3MF09IlNS
Q19BTFBIQSIsZVtlLk9ORV9NSU5VU19TUkNfQUxQSEE9NzcxXT0iT05FX01JTlVTX1NSQ19BTFBI
QSIsZVtlLkRTVF9BTFBIQT03NzJdPSJEU1RfQUxQSEEiLGVbZS5PTkVfTUlOVVNfRFNUX0FMUEhB
PTc3M109Ik9ORV9NSU5VU19EU1RfQUxQSEEiLGVbZS5DT05TVEFOVF9DT0xPUj0zMjc2OV09IkNP
TlNUQU5UX0NPTE9SIixlW2UuT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SPTMyNzcwXT0iT05FX01J
TlVTX0NPTlNUQU5UX0NPTE9SIixlW2UuQ09OU1RBTlRfQUxQSEE9MzI3NzFdPSJDT05TVEFOVF9B
TFBIQSIsZVtlLk9ORV9NSU5VU19DT05TVEFOVF9BTFBIQT0zMjc3Ml09Ik9ORV9NSU5VU19DT05T
VEFOVF9BTFBIQSIsZVtlLlNSQ19BTFBIQV9TQVRVUkFURT03NzZdPSJTUkNfQUxQSEFfU0FUVVJB
VEUifShkfHwoZD17fSkpO3ZhciBoLHA9bigwKSxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31y
ZXR1cm4gZS5TZXRNYXRyaXg9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgYT1udWxsO2lmKCJNT0RF
TCI9PT1uLnNlbWFudGljP2E9dC5nZXRXb3JsZE1hdHJpeCgpOiJQUk9KRUNUSU9OIj09PW4uc2Vt
YW50aWM/YT1lLmdldFByb2plY3Rpb25NYXRyaXgoKToiVklFVyI9PT1uLnNlbWFudGljP2E9ZS5n
ZXRWaWV3TWF0cml4KCk6Ik1PREVMVklFV0lOVkVSU0VUUkFOU1BPU0UiPT09bi5zZW1hbnRpYz9h
PXAuTWF0cml4LlRyYW5zcG9zZSh0LmdldFdvcmxkTWF0cml4KCkubXVsdGlwbHkoZS5nZXRWaWV3
TWF0cml4KCkpLmludmVydCgpKToiTU9ERUxWSUVXIj09PW4uc2VtYW50aWM/YT10LmdldFdvcmxk
TWF0cml4KCkubXVsdGlwbHkoZS5nZXRWaWV3TWF0cml4KCkpOiJNT0RFTFZJRVdQUk9KRUNUSU9O
Ij09PW4uc2VtYW50aWM/YT10LmdldFdvcmxkTWF0cml4KCkubXVsdGlwbHkoZS5nZXRUcmFuc2Zv
cm1NYXRyaXgoKSk6Ik1PREVMSU5WRVJTRSI9PT1uLnNlbWFudGljP2E9dC5nZXRXb3JsZE1hdHJp
eCgpLmludmVydCgpOiJWSUVXSU5WRVJTRSI9PT1uLnNlbWFudGljP2E9ZS5nZXRWaWV3TWF0cml4
KCkuaW52ZXJ0KCk6IlBST0pFQ1RJT05JTlZFUlNFIj09PW4uc2VtYW50aWM/YT1lLmdldFByb2pl
Y3Rpb25NYXRyaXgoKS5pbnZlcnQoKToiTU9ERUxWSUVXSU5WRVJTRSI9PT1uLnNlbWFudGljP2E9
dC5nZXRXb3JsZE1hdHJpeCgpLm11bHRpcGx5KGUuZ2V0Vmlld01hdHJpeCgpKS5pbnZlcnQoKToi
TU9ERUxWSUVXUFJPSkVDVElPTklOVkVSU0UiPT09bi5zZW1hbnRpYz9hPXQuZ2V0V29ybGRNYXRy
aXgoKS5tdWx0aXBseShlLmdldFRyYW5zZm9ybU1hdHJpeCgpKS5pbnZlcnQoKToiTU9ERUxJTlZF
UlNFVFJBTlNQT1NFIj09PW4uc2VtYW50aWMmJihhPXAuTWF0cml4LlRyYW5zcG9zZSh0LmdldFdv
cmxkTWF0cml4KCkuaW52ZXJ0KCkpKSxhKXN3aXRjaChuLnR5cGUpe2Nhc2Ugcy5GTE9BVF9NQVQy
Om8uc2V0TWF0cml4MngyKHIscC5NYXRyaXguR2V0QXNNYXRyaXgyeDIoYSkpO2JyZWFrO2Nhc2Ug
cy5GTE9BVF9NQVQzOm8uc2V0TWF0cml4M3gzKHIscC5NYXRyaXguR2V0QXNNYXRyaXgzeDMoYSkp
O2JyZWFrO2Nhc2Ugcy5GTE9BVF9NQVQ0Om8uc2V0TWF0cml4KHIsYSl9fSxlLlNldFVuaWZvcm09
ZnVuY3Rpb24oZSx0LG4scil7c3dpdGNoKHIpe2Nhc2Ugcy5GTE9BVDpyZXR1cm4gZS5zZXRGbG9h
dCh0LG4pLCEwO2Nhc2Ugcy5GTE9BVF9WRUMyOnJldHVybiBlLnNldFZlY3RvcjIodCxwLlZlY3Rv
cjIuRnJvbUFycmF5KG4pKSwhMDtjYXNlIHMuRkxPQVRfVkVDMzpyZXR1cm4gZS5zZXRWZWN0b3Iz
KHQscC5WZWN0b3IzLkZyb21BcnJheShuKSksITA7Y2FzZSBzLkZMT0FUX1ZFQzQ6cmV0dXJuIGUu
c2V0VmVjdG9yNCh0LHAuVmVjdG9yNC5Gcm9tQXJyYXkobikpLCEwO2RlZmF1bHQ6cmV0dXJuITF9
fSxlLkdldFdyYXBNb2RlPWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIGwuQ0xBTVBfVE9fRURH
RTpyZXR1cm4gcC5UZXh0dXJlLkNMQU1QX0FERFJFU1NNT0RFO2Nhc2UgbC5NSVJST1JFRF9SRVBF
QVQ6cmV0dXJuIHAuVGV4dHVyZS5NSVJST1JfQUREUkVTU01PREU7Y2FzZSBsLlJFUEVBVDpkZWZh
dWx0OnJldHVybiBwLlRleHR1cmUuV1JBUF9BRERSRVNTTU9ERX19LGUuR2V0Qnl0ZVN0cmlkZUZy
b21UeXBlPWZ1bmN0aW9uKGUpe3N3aXRjaChlLnR5cGUpe2Nhc2UiVkVDMiI6cmV0dXJuIDI7Y2Fz
ZSJWRUMzIjpyZXR1cm4gMztjYXNlIlZFQzQiOmNhc2UiTUFUMiI6cmV0dXJuIDQ7Y2FzZSJNQVQz
IjpyZXR1cm4gOTtjYXNlIk1BVDQiOnJldHVybiAxNjtkZWZhdWx0OnJldHVybiAxfX0sZS5HZXRU
ZXh0dXJlRmlsdGVyTW9kZT1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSB1LkxJTkVBUjpjYXNl
IHUuTElORUFSX01JUE1BUF9ORUFSRVNUOmNhc2UgdS5MSU5FQVJfTUlQTUFQX0xJTkVBUjpyZXR1
cm4gcC5UZXh0dXJlLlRSSUxJTkVBUl9TQU1QTElOR01PREU7Y2FzZSB1Lk5FQVJFU1Q6Y2FzZSB1
Lk5FQVJFU1RfTUlQTUFQX05FQVJFU1Q6cmV0dXJuIHAuVGV4dHVyZS5ORUFSRVNUX1NBTVBMSU5H
TU9ERTtkZWZhdWx0OnJldHVybiBwLlRleHR1cmUuQklMSU5FQVJfU0FNUExJTkdNT0RFfX0sZS5H
ZXRCdWZmZXJGcm9tQnVmZmVyVmlldz1mdW5jdGlvbihlLHQsbixyLG8pe249dC5ieXRlT2Zmc2V0
K247dmFyIGk9ZS5sb2FkZWRCdWZmZXJWaWV3c1t0LmJ1ZmZlcl07aWYobityPmkuYnl0ZUxlbmd0
aCl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlciBhY2Nlc3MgaXMgb3V0IG9mIHJhbmdlIik7dmFyIHM9
aS5idWZmZXI7c3dpdGNoKG4rPWkuYnl0ZU9mZnNldCxvKXtjYXNlIGEuQllURTpyZXR1cm4gbmV3
IEludDhBcnJheShzLG4scik7Y2FzZSBhLlVOU0lHTkVEX0JZVEU6cmV0dXJuIG5ldyBVaW50OEFy
cmF5KHMsbixyKTtjYXNlIGEuU0hPUlQ6cmV0dXJuIG5ldyBJbnQxNkFycmF5KHMsbixyKTtjYXNl
IGEuVU5TSUdORURfU0hPUlQ6cmV0dXJuIG5ldyBVaW50MTZBcnJheShzLG4scik7ZGVmYXVsdDpy
ZXR1cm4gbmV3IEZsb2F0MzJBcnJheShzLG4scil9fSxlLkdldEJ1ZmZlckZyb21BY2Nlc3Nvcj1m
dW5jdGlvbih0LG4pe3ZhciByPXQuYnVmZmVyVmlld3Nbbi5idWZmZXJWaWV3XSxvPW4uY291bnQq
ZS5HZXRCeXRlU3RyaWRlRnJvbVR5cGUobik7cmV0dXJuIGUuR2V0QnVmZmVyRnJvbUJ1ZmZlclZp
ZXcodCxyLG4uYnl0ZU9mZnNldCxvLG4uY29tcG9uZW50VHlwZSl9LGUuRGVjb2RlQnVmZmVyVG9U
ZXh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iIixuPWUuYnl0ZUxlbmd0aCxyPTA7cjxuOysrcil0
Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbcl0pO3JldHVybiB0fSxlLkdldERlZmF1bHRNYXRlcmlh
bD1mdW5jdGlvbih0KXtpZighZS5fRGVmYXVsdE1hdGVyaWFsKXtwLkVmZmVjdC5TaGFkZXJzU3Rv
cmUuR0xURkRlZmF1bHRNYXRlcmlhbFZlcnRleFNoYWRlcj1bInByZWNpc2lvbiBoaWdocCBmbG9h
dDsiLCIiLCJ1bmlmb3JtIG1hdDQgd29ybGRWaWV3OyIsInVuaWZvcm0gbWF0NCBwcm9qZWN0aW9u
OyIsIiIsImF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uOyIsIiIsInZvaWQgbWFpbih2b2lkKSIsInsi
LCIgICAgZ2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uICogd29ybGRWaWV3ICogdmVjNChwb3NpdGlv
biwgMS4wKTsiLCJ9Il0uam9pbigiXG4iKSxwLkVmZmVjdC5TaGFkZXJzU3RvcmUuR0xURkRlZmF1
bHRNYXRlcmlhbFBpeGVsU2hhZGVyPVsicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyIsIiIsInVuaWZv
cm0gdmVjNCB1X2VtaXNzaW9uOyIsIiIsInZvaWQgbWFpbih2b2lkKSIsInsiLCIgICAgZ2xfRnJh
Z0NvbG9yID0gdV9lbWlzc2lvbjsiLCJ9Il0uam9pbigiXG4iKTt2YXIgbj17YXR0cmlidXRlczpb
InBvc2l0aW9uIl0sdW5pZm9ybXM6WyJ3b3JsZFZpZXciLCJwcm9qZWN0aW9uIiwidV9lbWlzc2lv
biJdLHNhbXBsZXJzOm5ldyBBcnJheSxuZWVkQWxwaGFCbGVuZGluZzohMX07ZS5fRGVmYXVsdE1h
dGVyaWFsPW5ldyBwLlNoYWRlck1hdGVyaWFsKCJHTFRGRGVmYXVsdE1hdGVyaWFsIix0LHt2ZXJ0
ZXg6IkdMVEZEZWZhdWx0TWF0ZXJpYWwiLGZyYWdtZW50OiJHTFRGRGVmYXVsdE1hdGVyaWFsIn0s
biksZS5fRGVmYXVsdE1hdGVyaWFsLnNldENvbG9yNCgidV9lbWlzc2lvbiIsbmV3IHAuQ29sb3I0
KC41LC41LC41LDEpKX1yZXR1cm4gZS5fRGVmYXVsdE1hdGVyaWFsfSxlLl9EZWZhdWx0TWF0ZXJp
YWw9bnVsbCxlfSgpLF89bigyKTshZnVuY3Rpb24oZSl7ZVtlLklERU5USUZJRVI9MV09IklERU5U
SUZJRVIiLGVbZS5VTktOT1dOPTJdPSJVTktOT1dOIixlW2UuRU5EX09GX0lOUFVUPTNdPSJFTkRf
T0ZfSU5QVVQifShofHwoaD17fSkpO3ZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlz
Ll9wb3M9MCx0aGlzLmN1cnJlbnRUb2tlbj1oLlVOS05PV04sdGhpcy5jdXJyZW50SWRlbnRpZmll
cj0iIix0aGlzLmN1cnJlbnRTdHJpbmc9IiIsdGhpcy5pc0xldHRlck9yRGlnaXRQYXR0ZXJuPS9e
W2EtekEtWjAtOV0rJC8sdGhpcy5fdG9QYXJzZT1lLHRoaXMuX21heFBvcz1lLmxlbmd0aH1yZXR1
cm4gZS5wcm90b3R5cGUuZ2V0TmV4dFRva2VuPWZ1bmN0aW9uKCl7aWYodGhpcy5pc0VuZCgpKXJl
dHVybiBoLkVORF9PRl9JTlBVVDtpZih0aGlzLmN1cnJlbnRTdHJpbmc9dGhpcy5yZWFkKCksdGhp
cy5jdXJyZW50VG9rZW49aC5VTktOT1dOLCJfIj09PXRoaXMuY3VycmVudFN0cmluZ3x8dGhpcy5p
c0xldHRlck9yRGlnaXRQYXR0ZXJuLnRlc3QodGhpcy5jdXJyZW50U3RyaW5nKSlmb3IodGhpcy5j
dXJyZW50VG9rZW49aC5JREVOVElGSUVSLHRoaXMuY3VycmVudElkZW50aWZpZXI9dGhpcy5jdXJy
ZW50U3RyaW5nOyF0aGlzLmlzRW5kKCkmJih0aGlzLmlzTGV0dGVyT3JEaWdpdFBhdHRlcm4udGVz
dCh0aGlzLmN1cnJlbnRTdHJpbmc9dGhpcy5wZWVrKCkpfHwiXyI9PT10aGlzLmN1cnJlbnRTdHJp
bmcpOyl0aGlzLmN1cnJlbnRJZGVudGlmaWVyKz10aGlzLmN1cnJlbnRTdHJpbmcsdGhpcy5mb3J3
YXJkKCk7cmV0dXJuIHRoaXMuY3VycmVudFRva2VufSxlLnByb3RvdHlwZS5wZWVrPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMuX3RvUGFyc2VbdGhpcy5fcG9zXX0sZS5wcm90b3R5cGUucmVhZD1mdW5j
dGlvbigpe3JldHVybiB0aGlzLl90b1BhcnNlW3RoaXMuX3BvcysrXX0sZS5wcm90b3R5cGUuZm9y
d2FyZD1mdW5jdGlvbigpe3RoaXMuX3BvcysrfSxlLnByb3RvdHlwZS5pc0VuZD1mdW5jdGlvbigp
e3JldHVybiB0aGlzLl9wb3M+PXRoaXMuX21heFBvc30sZX0oKSx2PVsiTU9ERUwiLCJWSUVXIiwi
UFJPSkVDVElPTiIsIk1PREVMVklFVyIsIk1PREVMVklFV1BST0pFQ1RJT04iLCJKT0lOVE1BVFJJ
WCJdLEE9WyJ3b3JsZCIsInZpZXciLCJwcm9qZWN0aW9uIiwid29ybGRWaWV3Iiwid29ybGRWaWV3
UHJvamVjdGlvbiIsIm1Cb25lcyJdLGI9WyJ0cmFuc2xhdGlvbiIsInJvdGF0aW9uIiwic2NhbGUi
XSxnPVsicG9zaXRpb24iLCJyb3RhdGlvblF1YXRlcm5pb24iLCJzY2FsaW5nIl0sVD1mdW5jdGlv
bihlLHQsbil7Zm9yKHZhciByIGluIGUpe3ZhciBvPWVbcl07blt0XVtyXT1vfX0seD1mdW5jdGlv
bihlKXtpZihlKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGgvMjt0KyspZVsyKnQrMV09MS1lWzIqdCsx
XX0sTD1mdW5jdGlvbihlKXtpZigiTk9STUFMIj09PWUuc2VtYW50aWMpcmV0dXJuIm5vcm1hbCI7
aWYoIlBPU0lUSU9OIj09PWUuc2VtYW50aWMpcmV0dXJuInBvc2l0aW9uIjtpZigiSk9JTlQiPT09
ZS5zZW1hbnRpYylyZXR1cm4ibWF0cmljZXNJbmRpY2VzIjtpZigiV0VJR0hUIj09PWUuc2VtYW50
aWMpcmV0dXJuIm1hdHJpY2VzV2VpZ2h0cyI7aWYoIkNPTE9SIj09PWUuc2VtYW50aWMpcmV0dXJu
ImNvbG9yIjtpZihlLnNlbWFudGljJiYtMSE9PWUuc2VtYW50aWMuaW5kZXhPZigiVEVYQ09PUkRf
Iikpe3ZhciB0PU51bWJlcihlLnNlbWFudGljLnNwbGl0KCJfIilbMV0pO3JldHVybiJ1diIrKDA9
PT10PyIiOnQrMSl9cmV0dXJuIG51bGx9LEU9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtpZihlLnRy
YW5zbGF0aW9ufHxlLnJvdGF0aW9ufHxlLnNjYWxlKXt2YXIgbj1wLlZlY3RvcjMuRnJvbUFycmF5
KGUuc2NhbGV8fFsxLDEsMV0pLHI9cC5RdWF0ZXJuaW9uLkZyb21BcnJheShlLnJvdGF0aW9ufHxb
MCwwLDAsMV0pLG89cC5WZWN0b3IzLkZyb21BcnJheShlLnRyYW5zbGF0aW9ufHxbMCwwLDBdKTt0
PXAuTWF0cml4LkNvbXBvc2UobixyLG8pfWVsc2UgdD1wLk1hdHJpeC5Gcm9tQXJyYXkoZS5tYXRy
aXgpO3JldHVybiB0fSxPPWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbz0wO288ci5ib25lcy5s
ZW5ndGg7bysrKWlmKHIuYm9uZXNbb10ubmFtZT09PW4pcmV0dXJuIHIuYm9uZXNbb107dmFyIGE9
ZS5ub2Rlcztmb3IodmFyIGkgaW4gYSl7dmFyIHM9YVtpXTtpZihzLmpvaW50TmFtZSl7dmFyIGw9
cy5jaGlsZHJlbjtmb3Iobz0wO288bC5sZW5ndGg7bysrKXt2YXIgdT1lLm5vZGVzW2xbb11dO2lm
KHUuam9pbnROYW1lJiZ1LmpvaW50TmFtZT09PW4pe3ZhciBjPUUocyksZj1uZXcgcC5Cb25lKHMu
bmFtZXx8IiIscixPKGUsdCxzLmpvaW50TmFtZSxyKSxjKTtyZXR1cm4gZi5pZD1pLGZ9fX19cmV0
dXJuIG51bGx9LE09ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylmb3Io
dmFyIHI9ZVtuXSxvPTA7bzxyLm5vZGUuY2hpbGRyZW4ubGVuZ3RoO28rKyl7aWYoci5ub2RlLmNo
aWxkcmVuW29dPT09dClyZXR1cm4gci5ib25lfXJldHVybiBudWxsfSxTPWZ1bmN0aW9uKGUsdCl7
dmFyIG49ZS5ub2RlcyxyPW5bdF07aWYocilyZXR1cm57bm9kZTpyLGlkOnR9O2Zvcih2YXIgbyBp
biBuKWlmKChyPW5bb10pLmpvaW50TmFtZT09PXQpcmV0dXJue25vZGU6cixpZDpvfTtyZXR1cm4g
bnVsbH0sdz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248ZS5qb2ludE5hbWVzLmxlbmd0aDtu
KyspaWYoZS5qb2ludE5hbWVzW25dPT09dClyZXR1cm4hMDtyZXR1cm4hMX0sTj1mdW5jdGlvbihl
LHQsbixyLG8pe2lmKHJ8fChyPW5ldyBwLlNrZWxldG9uKHQubmFtZXx8IiIsIiIsZS5zY2VuZSkp
LCF0LmJhYnlsb25Ta2VsZXRvbilyZXR1cm4gcjt2YXIgYT1bXSxpPVtdOyFmdW5jdGlvbihlLHQs
bixyKXtmb3IodmFyIG8gaW4gZS5ub2Rlcyl7dmFyIGE9ZS5ub2Rlc1tvXSxpPW87aWYoYS5qb2lu
dE5hbWUmJiF3KG4sYS5qb2ludE5hbWUpKXt2YXIgcz1FKGEpLGw9bmV3IHAuQm9uZShhLm5hbWV8
fCIiLHQsbnVsbCxzKTtsLmlkPWksci5wdXNoKHtib25lOmwsbm9kZTphLGlkOml9KX19Zm9yKHZh
ciB1PTA7dTxyLmxlbmd0aDt1KyspZm9yKHZhciBjPXJbdV0sZj1jLm5vZGUuY2hpbGRyZW4sZD0w
O2Q8Zi5sZW5ndGg7ZCsrKXtmb3IodmFyIGg9bnVsbCxtPTA7bTxyLmxlbmd0aDttKyspaWYocltt
XS5pZD09PWZbZF0pe2g9clttXTticmVha31oJiYoaC5ib25lLl9wYXJlbnQ9Yy5ib25lLGMuYm9u
ZS5jaGlsZHJlbi5wdXNoKGguYm9uZSkpfX0oZSxyLHQsYSksci5ib25lcz1bXTtmb3IodmFyIHM9
MDtzPHQuam9pbnROYW1lcy5sZW5ndGg7cysrKXtpZihiPVMoZSx0LmpvaW50TmFtZXNbc10pKXt2
YXIgbD1iLm5vZGU7aWYobCl7bz1iLmlkO3ZhciB1PWUuc2NlbmUuZ2V0Qm9uZUJ5SUQobyk7aWYo
dSlyLmJvbmVzLnB1c2godSk7ZWxzZXtmb3IodmFyIGM9ITEsZj1udWxsLGQ9MDtkPHM7ZCsrKXt2
YXIgaD1TKGUsdC5qb2ludE5hbWVzW2RdKTtpZihoKXt2YXIgbT1oLm5vZGU7aWYobSl7dmFyIF89
bS5jaGlsZHJlbjtpZihfKXtjPSExO2Zvcih2YXIgeT0wO3k8Xy5sZW5ndGg7eSsrKWlmKF9beV09
PT1vKXtmPU8oZSx0LHQuam9pbnROYW1lc1tkXSxyKSxjPSEwO2JyZWFrfWlmKGMpYnJlYWt9fWVs
c2UgcC5Ub29scy5XYXJuKCJKb2ludCBuYW1lZCAiK3Quam9pbnROYW1lc1tkXSsiIGRvZXMgbm90
IGV4aXN0IHdoZW4gbG9va2luZyBmb3IgcGFyZW50Iil9fXZhciB2PUUobCk7IWYmJmEubGVuZ3Ro
PjAmJihmPU0oYSxvKSkmJi0xPT09aS5pbmRleE9mKGYpJiZpLnB1c2goZiksbmV3IHAuQm9uZShs
LmpvaW50TmFtZXx8IiIscixmLHYpLmlkPW99fWVsc2UgcC5Ub29scy5XYXJuKCJKb2ludCBuYW1l
ZCAiK3Quam9pbnROYW1lc1tzXSsiIGRvZXMgbm90IGV4aXN0Iil9fXZhciBBPXIuYm9uZXM7ci5i
b25lcz1bXTtmb3Iocz0wO3M8dC5qb2ludE5hbWVzLmxlbmd0aDtzKyspe3ZhciBiO2lmKGI9Uyhl
LHQuam9pbnROYW1lc1tzXSkpZm9yKGQ9MDtkPEEubGVuZ3RoO2QrKylpZihBW2RdLmlkPT09Yi5p
ZCl7ci5ib25lcy5wdXNoKEFbZF0pO2JyZWFrfX1yLnByZXBhcmUoKTtmb3Iocz0wO3M8aS5sZW5n
dGg7cysrKXIuYm9uZXMucHVzaChpW3NdKTtyZXR1cm4gcn0sUD1mdW5jdGlvbihlLHQsbixyLG8p
e2lmKG98fCgobz1uZXcgcC5NZXNoKHQubmFtZXx8IiIsZS5zY2VuZSkpLmlkPXIpLCF0LmJhYnls
b25Ob2RlKXJldHVybiBvO2Zvcih2YXIgYSxpPVtdLHM9bnVsbCxsPW5ldyBBcnJheSx1PW5ldyBB
cnJheSxjPW5ldyBBcnJheSxmPW5ldyBBcnJheSxkPTA7ZDxuLmxlbmd0aDtkKyspe3ZhciBoPW5b
ZF07aWYoQz1lLm1lc2hlc1toXSlmb3IodmFyIHk9MDt5PEMucHJpbWl0aXZlcy5sZW5ndGg7eSsr
KXt2YXIgdj1uZXcgcC5WZXJ0ZXhEYXRhLEE9Qy5wcmltaXRpdmVzW3ldO0EubW9kZTt2YXIgYj1B
LmF0dHJpYnV0ZXMsZz1udWxsLFQ9bnVsbDtmb3IodmFyIEwgaW4gYilpZihnPWUuYWNjZXNzb3Jz
W2JbTF1dLFQ9bS5HZXRCdWZmZXJGcm9tQWNjZXNzb3IoZSxnKSwiTk9STUFMIj09PUwpdi5ub3Jt
YWxzPW5ldyBGbG9hdDMyQXJyYXkoVC5sZW5ndGgpLHYubm9ybWFscy5zZXQoVCk7ZWxzZSBpZigi
UE9TSVRJT04iPT09TCl7aWYoXy5HTFRGRmlsZUxvYWRlci5Ib21vZ2VuZW91c0Nvb3JkaW5hdGVz
KXt2LnBvc2l0aW9ucz1uZXcgRmxvYXQzMkFycmF5KFQubGVuZ3RoLVQubGVuZ3RoLzQpO2Zvcih2
YXIgRT0wO0U8VC5sZW5ndGg7RSs9NCl2LnBvc2l0aW9uc1tFXT1UW0VdLHYucG9zaXRpb25zW0Ur
MV09VFtFKzFdLHYucG9zaXRpb25zW0UrMl09VFtFKzJdfWVsc2Ugdi5wb3NpdGlvbnM9bmV3IEZs
b2F0MzJBcnJheShULmxlbmd0aCksdi5wb3NpdGlvbnMuc2V0KFQpO3UucHVzaCh2LnBvc2l0aW9u
cy5sZW5ndGgpfWVsc2UgaWYoLTEhPT1MLmluZGV4T2YoIlRFWENPT1JEXyIpKXt2YXIgTz1OdW1i
ZXIoTC5zcGxpdCgiXyIpWzFdKSxNPXAuVmVydGV4QnVmZmVyLlVWS2luZCsoMD09PU8/IiI6Tysx
KSxTPW5ldyBGbG9hdDMyQXJyYXkoVC5sZW5ndGgpO1Muc2V0KFQpLHgoUyksdi5zZXQoUyxNKX1l
bHNlIkpPSU5UIj09PUw/KHYubWF0cmljZXNJbmRpY2VzPW5ldyBGbG9hdDMyQXJyYXkoVC5sZW5n
dGgpLHYubWF0cmljZXNJbmRpY2VzLnNldChUKSk6IldFSUdIVCI9PT1MPyh2Lm1hdHJpY2VzV2Vp
Z2h0cz1uZXcgRmxvYXQzMkFycmF5KFQubGVuZ3RoKSx2Lm1hdHJpY2VzV2VpZ2h0cy5zZXQoVCkp
OiJDT0xPUiI9PT1MJiYodi5jb2xvcnM9bmV3IEZsb2F0MzJBcnJheShULmxlbmd0aCksdi5jb2xv
cnMuc2V0KFQpKTtpZihnPWUuYWNjZXNzb3JzW0EuaW5kaWNlc10pVD1tLkdldEJ1ZmZlckZyb21B
Y2Nlc3NvcihlLGcpLHYuaW5kaWNlcz1uZXcgSW50MzJBcnJheShULmxlbmd0aCksdi5pbmRpY2Vz
LnNldChUKSxmLnB1c2godi5pbmRpY2VzLmxlbmd0aCk7ZWxzZXt2YXIgdz1bXTtmb3IoRT0wO0U8
di5wb3NpdGlvbnMubGVuZ3RoLzM7RSsrKXcucHVzaChFKTt2LmluZGljZXM9bmV3IEludDMyQXJy
YXkodyksZi5wdXNoKHYuaW5kaWNlcy5sZW5ndGgpfXM/cy5tZXJnZSh2KTpzPXY7dmFyIE49ZS5z
Y2VuZS5nZXRNYXRlcmlhbEJ5SUQoQS5tYXRlcmlhbCk7aS5wdXNoKG51bGw9PT1OP20uR2V0RGVm
YXVsdE1hdGVyaWFsKGUuc2NlbmUpOk4pLGwucHVzaCgwPT09bC5sZW5ndGg/MDpsW2wubGVuZ3Ro
LTFdK3VbdS5sZW5ndGgtMl0pLGMucHVzaCgwPT09Yy5sZW5ndGg/MDpjW2MubGVuZ3RoLTFdK2Zb
Zi5sZW5ndGgtMl0pfX1pLmxlbmd0aD4xPyhhPW5ldyBwLk11bHRpTWF0ZXJpYWwoIm11bHRpbWF0
IityLGUuc2NlbmUpKS5zdWJNYXRlcmlhbHM9aTphPW5ldyBwLlN0YW5kYXJkTWF0ZXJpYWwoIm11
bHRpbWF0IityLGUuc2NlbmUpLDE9PT1pLmxlbmd0aCYmKGE9aVswXSksby5tYXRlcmlhbHx8KG8u
bWF0ZXJpYWw9YSksbmV3IHAuR2VvbWV0cnkocixlLnNjZW5lLHMsITEsbyksby5jb21wdXRlV29y
bGRNYXRyaXgoITApLG8uc3ViTWVzaGVzPVtdO3ZhciBQPTA7Zm9yKGQ9MDtkPG4ubGVuZ3RoO2Qr
Kyl7dmFyIEM7aD1uW2RdO2lmKEM9ZS5tZXNoZXNbaF0pZm9yKHk9MDt5PEMucHJpbWl0aXZlcy5s
ZW5ndGg7eSsrKUMucHJpbWl0aXZlc1t5XS5tb2RlLHAuU3ViTWVzaC5BZGRUb01lc2goUCxsW1Bd
LHVbUF0sY1tQXSxmW1BdLG8sbywhMCksUCsrfXJldHVybiBvfSxDPWZ1bmN0aW9uKGUsdCxuLHIp
e2UucG9zaXRpb24mJihlLnBvc2l0aW9uPXQpLChlLnJvdGF0aW9uUXVhdGVybmlvbnx8ZS5yb3Rh
dGlvbikmJihlLnJvdGF0aW9uUXVhdGVybmlvbj1uKSxlLnNjYWxpbmcmJihlLnNjYWxpbmc9cil9
LFI9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bnVsbDtpZihlLmltcG9ydE9ubHlNZXNoZXMmJih0
LnNraW58fHQubWVzaGVzKSYmZS5pbXBvcnRNZXNoZXNOYW1lcyYmZS5pbXBvcnRNZXNoZXNOYW1l
cy5sZW5ndGg+MCYmLTE9PT1lLmltcG9ydE1lc2hlc05hbWVzLmluZGV4T2YodC5uYW1lfHwiIikp
cmV0dXJuIG51bGw7aWYodC5za2luKXtpZih0Lm1lc2hlcyl7dmFyIGE9ZS5za2luc1t0LnNraW5d
OyhpPVAoZSx0LHQubWVzaGVzLG4sdC5iYWJ5bG9uTm9kZSkpLnNrZWxldG9uPWUuc2NlbmUuZ2V0
TGFzdFNrZWxldG9uQnlJRCh0LnNraW4pLG51bGw9PT1pLnNrZWxldG9uJiYoaS5za2VsZXRvbj1O
KGUsYSwwLGEuYmFieWxvblNrZWxldG9uLHQuc2tpbiksYS5iYWJ5bG9uU2tlbGV0b258fChhLmJh
Ynlsb25Ta2VsZXRvbj1pLnNrZWxldG9uKSksbz1pfX1lbHNlIGlmKHQubWVzaGVzKXt2YXIgaTtv
PWk9UChlLHQsdC5tZXNoP1t0Lm1lc2hdOnQubWVzaGVzLG4sdC5iYWJ5bG9uTm9kZSl9ZWxzZSBp
ZighdC5saWdodHx8dC5iYWJ5bG9uTm9kZXx8ZS5pbXBvcnRPbmx5TWVzaGVzKXtpZih0LmNhbWVy
YSYmIXQuYmFieWxvbk5vZGUmJiFlLmltcG9ydE9ubHlNZXNoZXMpe3ZhciBzPWUuY2FtZXJhc1t0
LmNhbWVyYV07aWYocylpZigib3J0aG9ncmFwaGljIj09PXMudHlwZSl7dmFyIGw9bmV3IHAuRnJl
ZUNhbWVyYSh0LmNhbWVyYSxwLlZlY3RvcjMuWmVybygpLGUuc2NlbmUsITEpO2wubmFtZT10Lm5h
bWV8fCIiLGwubW9kZT1wLkNhbWVyYS5PUlRIT0dSQVBISUNfQ0FNRVJBLGwuYXR0YWNoQ29udHJv
bChlLnNjZW5lLmdldEVuZ2luZSgpLmdldElucHV0RWxlbWVudCgpKSxvPWx9ZWxzZSBpZigicGVy
c3BlY3RpdmUiPT09cy50eXBlKXt2YXIgdT1zW3MudHlwZV0sYz1uZXcgcC5GcmVlQ2FtZXJhKHQu
Y2FtZXJhLHAuVmVjdG9yMy5aZXJvKCksZS5zY2VuZSwhMSk7Yy5uYW1lPXQubmFtZXx8IiIsYy5h
dHRhY2hDb250cm9sKGUuc2NlbmUuZ2V0RW5naW5lKCkuZ2V0SW5wdXRFbGVtZW50KCkpLHUuYXNw
ZWN0UmF0aW98fCh1LmFzcGVjdFJhdGlvPWUuc2NlbmUuZ2V0RW5naW5lKCkuZ2V0UmVuZGVyV2lk
dGgoKS9lLnNjZW5lLmdldEVuZ2luZSgpLmdldFJlbmRlckhlaWdodCgpKSx1LnpuZWFyJiZ1Lnpm
YXImJihjLm1heFo9dS56ZmFyLGMubWluWj11LnpuZWFyKSxvPWN9fX1lbHNle3ZhciBmPWUubGln
aHRzW3QubGlnaHRdO2lmKGYpaWYoImFtYmllbnQiPT09Zi50eXBlKXt2YXIgZD1mW2YudHlwZV0s
aD1uZXcgcC5IZW1pc3BoZXJpY0xpZ2h0KHQubGlnaHQscC5WZWN0b3IzLlplcm8oKSxlLnNjZW5l
KTtoLm5hbWU9dC5uYW1lfHwiIixkLmNvbG9yJiYoaC5kaWZmdXNlPXAuQ29sb3IzLkZyb21BcnJh
eShkLmNvbG9yKSksbz1ofWVsc2UgaWYoImRpcmVjdGlvbmFsIj09PWYudHlwZSl7dmFyIG09Zltm
LnR5cGVdLF89bmV3IHAuRGlyZWN0aW9uYWxMaWdodCh0LmxpZ2h0LHAuVmVjdG9yMy5aZXJvKCks
ZS5zY2VuZSk7Xy5uYW1lPXQubmFtZXx8IiIsbS5jb2xvciYmKF8uZGlmZnVzZT1wLkNvbG9yMy5G
cm9tQXJyYXkobS5jb2xvcikpLG89X31lbHNlIGlmKCJwb2ludCI9PT1mLnR5cGUpe3ZhciB5PWZb
Zi50eXBlXSx2PW5ldyBwLlBvaW50TGlnaHQodC5saWdodCxwLlZlY3RvcjMuWmVybygpLGUuc2Nl
bmUpO3YubmFtZT10Lm5hbWV8fCIiLHkuY29sb3ImJih2LmRpZmZ1c2U9cC5Db2xvcjMuRnJvbUFy
cmF5KHkuY29sb3IpKSxvPXZ9ZWxzZSBpZigic3BvdCI9PT1mLnR5cGUpe3ZhciBBPWZbZi50eXBl
XSxiPW5ldyBwLlNwb3RMaWdodCh0LmxpZ2h0LHAuVmVjdG9yMy5aZXJvKCkscC5WZWN0b3IzLlpl
cm8oKSwwLDAsZS5zY2VuZSk7Yi5uYW1lPXQubmFtZXx8IiIsQS5jb2xvciYmKGIuZGlmZnVzZT1w
LkNvbG9yMy5Gcm9tQXJyYXkoQS5jb2xvcikpLEEuZmFsbE9mQW5nbGUmJihiLmFuZ2xlPUEuZmFs
bE9mQW5nbGUpLEEuZmFsbE9mZkV4cG9uZW50JiYoYi5leHBvbmVudD1BLmZhbGxPZmZFeHBvbmVu
dCksbz1ifX1pZighdC5qb2ludE5hbWUpe2lmKHQuYmFieWxvbk5vZGUpcmV0dXJuIHQuYmFieWxv
bk5vZGU7aWYobnVsbD09PW8pe3ZhciBnPW5ldyBwLk1lc2godC5uYW1lfHwiIixlLnNjZW5lKTt0
LmJhYnlsb25Ob2RlPWcsbz1nfX1pZihudWxsIT09byl7aWYodC5tYXRyaXgmJm8gaW5zdGFuY2Vv
ZiBwLk1lc2gpIWZ1bmN0aW9uKGUsdCxuKXtpZih0Lm1hdHJpeCl7dmFyIHI9bmV3IHAuVmVjdG9y
MygwLDAsMCksbz1uZXcgcC5RdWF0ZXJuaW9uLGE9bmV3IHAuVmVjdG9yMygwLDAsMCk7cC5NYXRy
aXguRnJvbUFycmF5KHQubWF0cml4KS5kZWNvbXBvc2UoYSxvLHIpLEMoZSxyLG8sYSl9ZWxzZSB0
LnRyYW5zbGF0aW9uJiZ0LnJvdGF0aW9uJiZ0LnNjYWxlJiZDKGUscC5WZWN0b3IzLkZyb21BcnJh
eSh0LnRyYW5zbGF0aW9uKSxwLlF1YXRlcm5pb24uRnJvbUFycmF5KHQucm90YXRpb24pLHAuVmVj
dG9yMy5Gcm9tQXJyYXkodC5zY2FsZSkpO2UuY29tcHV0ZVdvcmxkTWF0cml4KCEwKX0obyx0KTtl
bHNle3ZhciBUPXQudHJhbnNsYXRpb258fFswLDAsMF0seD10LnJvdGF0aW9ufHxbMCwwLDAsMV0s
TD10LnNjYWxlfHxbMSwxLDFdO0MobyxwLlZlY3RvcjMuRnJvbUFycmF5KFQpLHAuUXVhdGVybmlv
bi5Gcm9tQXJyYXkoeCkscC5WZWN0b3IzLkZyb21BcnJheShMKSl9by51cGRhdGVDYWNoZSghMCks
dC5iYWJ5bG9uTm9kZT1vfXJldHVybiBvfSxJPWZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXIm
JihyPSExKTt2YXIgbz1lLm5vZGVzW3RdLGE9bnVsbDtpZihyPSEoZS5pbXBvcnRPbmx5TWVzaGVz
JiYhciYmZS5pbXBvcnRNZXNoZXNOYW1lcyl8fCgtMSE9PWUuaW1wb3J0TWVzaGVzTmFtZXMuaW5k
ZXhPZihvLm5hbWV8fCIiKXx8MD09PWUuaW1wb3J0TWVzaGVzTmFtZXMubGVuZ3RoKSwhby5qb2lu
dE5hbWUmJnImJm51bGwhPT0oYT1SKGUsbyx0KSkmJihhLmlkPXQsYS5wYXJlbnQ9biksby5jaGls
ZHJlbilmb3IodmFyIGk9MDtpPG8uY2hpbGRyZW4ubGVuZ3RoO2krKylJKGUsby5jaGlsZHJlbltp
XSxhLHIpfSxGPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY3VycmVudFNjZW5lO2lmKHQpZm9yKHZhciBu
PTA7bjx0Lm5vZGVzLmxlbmd0aDtuKyspSShlLHQubm9kZXNbbl0sbnVsbCk7ZWxzZSBmb3IodmFy
IHIgaW4gZS5zY2VuZXMpe3Q9ZS5zY2VuZXNbcl07Zm9yKG49MDtuPHQubm9kZXMubGVuZ3RoO24r
KylJKGUsdC5ub2Rlc1tuXSxudWxsKX0hZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUuYW5pbWF0
aW9ucyl7dmFyIG49ZS5hbmltYXRpb25zW3RdO2lmKG4uY2hhbm5lbHMmJm4uc2FtcGxlcnMpZm9y
KHZhciByPW51bGwsbz0wO288bi5jaGFubmVscy5sZW5ndGg7bysrKXt2YXIgYT1uLmNoYW5uZWxz
W29dLGk9bi5zYW1wbGVyc1thLnNhbXBsZXJdO2lmKGkpe3ZhciBzPW51bGwsbD1udWxsO24ucGFy
YW1ldGVycz8ocz1uLnBhcmFtZXRlcnNbaS5pbnB1dF0sbD1uLnBhcmFtZXRlcnNbaS5vdXRwdXRd
KToocz1pLmlucHV0LGw9aS5vdXRwdXQpO3ZhciB1PW0uR2V0QnVmZmVyRnJvbUFjY2Vzc29yKGUs
ZS5hY2Nlc3NvcnNbc10pLGM9bS5HZXRCdWZmZXJGcm9tQWNjZXNzb3IoZSxlLmFjY2Vzc29yc1ts
XSksZj1hLnRhcmdldC5pZCxkPWUuc2NlbmUuZ2V0Tm9kZUJ5SUQoZik7aWYobnVsbD09PWQmJihk
PWUuc2NlbmUuZ2V0Tm9kZUJ5TmFtZShmKSksbnVsbCE9PWQpe3ZhciBoPWQgaW5zdGFuY2VvZiBw
LkJvbmUsXz1hLnRhcmdldC5wYXRoLHk9Yi5pbmRleE9mKF8pOy0xIT09eSYmKF89Z1t5XSk7dmFy
IHY9cC5BbmltYXRpb24uQU5JTUFUSU9OVFlQRV9NQVRSSVg7aHx8KCJyb3RhdGlvblF1YXRlcm5p
b24iPT09Xz8odj1wLkFuaW1hdGlvbi5BTklNQVRJT05UWVBFX1FVQVRFUk5JT04sZC5yb3RhdGlv
blF1YXRlcm5pb249bmV3IHAuUXVhdGVybmlvbik6dj1wLkFuaW1hdGlvbi5BTklNQVRJT05UWVBF
X1ZFQ1RPUjMpO3ZhciBBPW51bGwsVD1bXSx4PTAsTD0hMTtoJiZyJiZyLmdldEtleXMoKS5sZW5n
dGg9PT11Lmxlbmd0aCYmKEE9cixMPSEwKSxMfHwoQT1uZXcgcC5BbmltYXRpb24odCxoPyJfbWF0
cml4IjpfLDEsdixwLkFuaW1hdGlvbi5BTklNQVRJT05MT09QTU9ERV9DWUNMRSkpO2Zvcih2YXIg
RT0wO0U8dS5sZW5ndGg7RSsrKXt2YXIgTz1udWxsO2lmKCJyb3RhdGlvblF1YXRlcm5pb24iPT09
Xz8oTz1wLlF1YXRlcm5pb24uRnJvbUFycmF5KFtjW3hdLGNbeCsxXSxjW3grMl0sY1t4KzNdXSks
eCs9NCk6KE89cC5WZWN0b3IzLkZyb21BcnJheShbY1t4XSxjW3grMV0sY1t4KzJdXSkseCs9Myks
aCl7dmFyIE09ZCxTPXAuVmVjdG9yMy5aZXJvKCksdz1uZXcgcC5RdWF0ZXJuaW9uLE49cC5WZWN0
b3IzLlplcm8oKSxQPU0uZ2V0QmFzZU1hdHJpeCgpO0wmJnImJihQPXIuZ2V0S2V5cygpW0VdLnZh
bHVlKSxQLmRlY29tcG9zZShOLHcsUyksInBvc2l0aW9uIj09PV8/Uz1POiJyb3RhdGlvblF1YXRl
cm5pb24iPT09Xz93PU86Tj1PLE89cC5NYXRyaXguQ29tcG9zZShOLHcsUyl9TD9yJiYoci5nZXRL
ZXlzKClbRV0udmFsdWU9Tyk6VC5wdXNoKHtmcmFtZTp1W0VdLHZhbHVlOk99KX0hTCYmQSYmKEEu
c2V0S2V5cyhUKSxkLmFuaW1hdGlvbnMucHVzaChBKSkscj1BLGUuc2NlbmUuc3RvcEFuaW1hdGlv
bihkKSxlLnNjZW5lLmJlZ2luQW5pbWF0aW9uKGQsMCx1W3UubGVuZ3RoLTFdLCEwLDEpfWVsc2Ug
cC5Ub29scy5XYXJuKCJDcmVhdGluZyBhbmltYXRpb24gbmFtZWQgIit0KyIuIEJ1dCBjYW5ub3Qg
ZmluZCBub2RlIG5hbWVkICIrZisiIHRvIGF0dGFjaCB0byIpfX19fShlKTtmb3Iobj0wO248ZS5z
Y2VuZS5za2VsZXRvbnMubGVuZ3RoO24rKyl7dmFyIG89ZS5zY2VuZS5za2VsZXRvbnNbbl07ZS5z
Y2VuZS5iZWdpbkFuaW1hdGlvbihvLDAsTnVtYmVyLk1BWF9WQUxVRSwhMCwxKX19LEQ9ZnVuY3Rp
b24oZSx0LG4scixvLGEpe3JldHVybiBmdW5jdGlvbihpKXshZnVuY3Rpb24oZSx0LG4scixvKXt2
YXIgYT1yLnZhbHVlc3x8bi5wYXJhbWV0ZXJzLGk9bi51bmlmb3Jtcztmb3IodmFyIGwgaW4gbyl7
dmFyIHU9b1tsXSxjPXUudHlwZSxmPWFbaVtsXV07aWYodm9pZCAwPT09ZiYmKGY9dS52YWx1ZSks
Zil7dmFyIGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3UudmFsdWUmJmUmJih0LnNl
dFRleHR1cmUoZSxuKSxkZWxldGUgb1tlXSl9fTtjPT09cy5TQU1QTEVSXzJEP2suTG9hZFRleHR1
cmVBc3luYyhlLHIudmFsdWVzP2Y6dS52YWx1ZSxkKGwpLGZ1bmN0aW9uKCl7cmV0dXJuIGQobnVs
bCl9KTp1LnZhbHVlJiZtLlNldFVuaWZvcm0odCxsLHIudmFsdWVzP2Y6dS52YWx1ZSxjKSYmZGVs
ZXRlIG9bbF19fX0oZSx0LG4scixvKSx0Lm9uQmluZD1mdW5jdGlvbihpKXshZnVuY3Rpb24oZSx0
LG4scixvLGEsaSl7dmFyIGw9YS52YWx1ZXN8fG8ucGFyYW1ldGVycztmb3IodmFyIHUgaW4gbil7
dmFyIGM9blt1XSxmPWMudHlwZTtpZihmPT09cy5GTE9BVF9NQVQyfHxmPT09cy5GTE9BVF9NQVQz
fHxmPT09cy5GTE9BVF9NQVQ0KWlmKCFjLnNlbWFudGljfHxjLnNvdXJjZXx8Yy5ub2RlKXtpZihj
LnNlbWFudGljJiYoYy5zb3VyY2V8fGMubm9kZSkpe3ZhciBkPXQuc2NlbmUuZ2V0Tm9kZUJ5TmFt
ZShjLnNvdXJjZXx8Yy5ub2RlfHwiIik7aWYobnVsbD09PWQmJihkPXQuc2NlbmUuZ2V0Tm9kZUJ5
SUQoYy5zb3VyY2V8fGMubm9kZXx8IiIpKSxudWxsPT09ZCljb250aW51ZTttLlNldE1hdHJpeCh0
LnNjZW5lLGQsYyx1LHIuZ2V0RWZmZWN0KCkpfX1lbHNlIG0uU2V0TWF0cml4KHQuc2NlbmUsZSxj
LHUsci5nZXRFZmZlY3QoKSk7ZWxzZXt2YXIgaD1sW28udW5pZm9ybXNbdV1dO2lmKCFoKWNvbnRp
bnVlO2lmKGY9PT1zLlNBTVBMRVJfMkQpe3ZhciBwPXQudGV4dHVyZXNbYS52YWx1ZXM/aDpjLnZh
bHVlXS5iYWJ5bG9uVGV4dHVyZTtpZihudWxsPT1wKWNvbnRpbnVlO3IuZ2V0RWZmZWN0KCkuc2V0
VGV4dHVyZSh1LHApfWVsc2UgbS5TZXRVbmlmb3JtKHIuZ2V0RWZmZWN0KCksdSxoLGYpfX1pKHIp
fShpLGUsbyx0LG4scixhKX19fSxCPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIgaW4gdC51bmlm
b3Jtcyl7dmFyIG89dC51bmlmb3Jtc1tyXSxhPXQucGFyYW1ldGVyc1tvXTtpZihlLmN1cnJlbnRJ
ZGVudGlmaWVyPT09ciYmYS5zZW1hbnRpYyYmIWEuc291cmNlJiYhYS5ub2RlKXt2YXIgaT12Lmlu
ZGV4T2YoYS5zZW1hbnRpYyk7aWYoLTEhPT1pKXJldHVybiBkZWxldGUgbltyXSxBW2ldfX1yZXR1
cm4gZS5jdXJyZW50SWRlbnRpZmllcn0sVj1mdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gZS5tYXRl
cmlhbHMpay5Mb2FkTWF0ZXJpYWxBc3luYyhlLHQsZnVuY3Rpb24oZSl7fSxmdW5jdGlvbigpe30p
fSxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5DcmVhdGVSdW50aW1lPWZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj17ZXh0ZW5zaW9uczp7fSxhY2Nlc3NvcnM6e30sYnVmZmVyczp7fSxi
dWZmZXJWaWV3czp7fSxtZXNoZXM6e30sbGlnaHRzOnt9LGNhbWVyYXM6e30sbm9kZXM6e30saW1h
Z2VzOnt9LHRleHR1cmVzOnt9LHNoYWRlcnM6e30scHJvZ3JhbXM6e30sc2FtcGxlcnM6e30sdGVj
aG5pcXVlczp7fSxtYXRlcmlhbHM6e30sYW5pbWF0aW9uczp7fSxza2luczp7fSxleHRlbnNpb25z
VXNlZDpbXSxzY2VuZXM6e30sYnVmZmVyc0NvdW50OjAsc2hhZGVyc2NvdW50OjAsc2NlbmU6dCxy
b290VXJsOm4sbG9hZGVkQnVmZmVyQ291bnQ6MCxsb2FkZWRCdWZmZXJWaWV3czp7fSxsb2FkZWRT
aGFkZXJDb3VudDowLGltcG9ydE9ubHlNZXNoZXM6ITEsZHVtbXlOb2RlczpbXX07cmV0dXJuIGUu
ZXh0ZW5zaW9ucyYmVChlLmV4dGVuc2lvbnMsImV4dGVuc2lvbnMiLHIpLGUuZXh0ZW5zaW9uc1Vz
ZWQmJlQoZS5leHRlbnNpb25zVXNlZCwiZXh0ZW5zaW9uc1VzZWQiLHIpLGUuYnVmZmVycyYmZnVu
Y3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtuXTt0LmJ1ZmZlcnNbbl09cix0LmJ1
ZmZlcnNDb3VudCsrfX0oZS5idWZmZXJzLHIpLGUuYnVmZmVyVmlld3MmJlQoZS5idWZmZXJWaWV3
cywiYnVmZmVyVmlld3MiLHIpLGUuYWNjZXNzb3JzJiZUKGUuYWNjZXNzb3JzLCJhY2Nlc3NvcnMi
LHIpLGUubWVzaGVzJiZUKGUubWVzaGVzLCJtZXNoZXMiLHIpLGUubGlnaHRzJiZUKGUubGlnaHRz
LCJsaWdodHMiLHIpLGUuY2FtZXJhcyYmVChlLmNhbWVyYXMsImNhbWVyYXMiLHIpLGUubm9kZXMm
JlQoZS5ub2Rlcywibm9kZXMiLHIpLGUuaW1hZ2VzJiZUKGUuaW1hZ2VzLCJpbWFnZXMiLHIpLGUu
dGV4dHVyZXMmJlQoZS50ZXh0dXJlcywidGV4dHVyZXMiLHIpLGUuc2hhZGVycyYmZnVuY3Rpb24o
ZSx0KXtmb3IodmFyIG4gaW4gZSl7dmFyIHI9ZVtuXTt0LnNoYWRlcnNbbl09cix0LnNoYWRlcnNj
b3VudCsrfX0oZS5zaGFkZXJzLHIpLGUucHJvZ3JhbXMmJlQoZS5wcm9ncmFtcywicHJvZ3JhbXMi
LHIpLGUuc2FtcGxlcnMmJlQoZS5zYW1wbGVycywic2FtcGxlcnMiLHIpLGUudGVjaG5pcXVlcyYm
VChlLnRlY2huaXF1ZXMsInRlY2huaXF1ZXMiLHIpLGUubWF0ZXJpYWxzJiZUKGUubWF0ZXJpYWxz
LCJtYXRlcmlhbHMiLHIpLGUuYW5pbWF0aW9ucyYmVChlLmFuaW1hdGlvbnMsImFuaW1hdGlvbnMi
LHIpLGUuc2tpbnMmJlQoZS5za2lucywic2tpbnMiLHIpLGUuc2NlbmVzJiYoci5zY2VuZXM9ZS5z
Y2VuZXMpLGUuc2NlbmUmJmUuc2NlbmVzJiYoci5jdXJyZW50U2NlbmU9ZS5zY2VuZXNbZS5zY2Vu
ZV0pLHJ9LGUuTG9hZEJ1ZmZlckFzeW5jPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGE9ZS5idWZm
ZXJzW3RdO3AuVG9vbHMuSXNCYXNlNjQoYS51cmkpP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1
cm4gbihuZXcgVWludDhBcnJheShwLlRvb2xzLkRlY29kZUJhc2U2NChhLnVyaSkpKX0pOnAuVG9v
bHMuTG9hZEZpbGUoZS5yb290VXJsK2EudXJpLGZ1bmN0aW9uKGUpe3JldHVybiBuKG5ldyBVaW50
OEFycmF5KGUpKX0sbyx2b2lkIDAsITAsZnVuY3Rpb24oZSl7ZSYmcihlLnN0YXR1cysiICIrZS5z
dGF0dXNUZXh0KX0pfSxlLkxvYWRUZXh0dXJlQnVmZmVyQXN5bmM9ZnVuY3Rpb24oZSx0LG4scil7
dmFyIG89ZS50ZXh0dXJlc1t0XTtpZihvJiZvLnNvdXJjZSlpZihvLmJhYnlsb25UZXh0dXJlKW4o
bnVsbCk7ZWxzZXt2YXIgYT1lLmltYWdlc1tvLnNvdXJjZV07cC5Ub29scy5Jc0Jhc2U2NChhLnVy
aSk/c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBuKG5ldyBVaW50OEFycmF5KHAuVG9vbHMu
RGVjb2RlQmFzZTY0KGEudXJpKSkpfSk6cC5Ub29scy5Mb2FkRmlsZShlLnJvb3RVcmwrYS51cmks
ZnVuY3Rpb24oZSl7cmV0dXJuIG4obmV3IFVpbnQ4QXJyYXkoZSkpfSx2b2lkIDAsdm9pZCAwLCEw
LGZ1bmN0aW9uKGUpe2UmJnIoZS5zdGF0dXMrIiAiK2Uuc3RhdHVzVGV4dCl9KX1lbHNlIHIoIiIp
fSxlLkNyZWF0ZVRleHR1cmVBc3luYz1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBhPWUudGV4dHVy
ZXNbdF07aWYoYS5iYWJ5bG9uVGV4dHVyZSlyKGEuYmFieWxvblRleHR1cmUpO2Vsc2V7dmFyIGk9
ZS5zYW1wbGVyc1thLnNhbXBsZXJdLHM9aS5taW5GaWx0ZXI9PT11Lk5FQVJFU1RfTUlQTUFQX05F
QVJFU1R8fGkubWluRmlsdGVyPT09dS5ORUFSRVNUX01JUE1BUF9MSU5FQVJ8fGkubWluRmlsdGVy
PT09dS5MSU5FQVJfTUlQTUFQX05FQVJFU1R8fGkubWluRmlsdGVyPT09dS5MSU5FQVJfTUlQTUFQ
X0xJTkVBUixsPXAuVGV4dHVyZS5CSUxJTkVBUl9TQU1QTElOR01PREUsYz1udWxsPT1uP25ldyBC
bG9iOm5ldyBCbG9iKFtuXSksZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGMpLGQ9ZnVuY3Rpb24oKXty
ZXR1cm4gVVJMLnJldm9rZU9iamVjdFVSTChmKX0saD1uZXcgcC5UZXh0dXJlKGYsZS5zY2VuZSwh
cywhMCxsLGQsZCk7dm9pZCAwIT09aS53cmFwUyYmKGgud3JhcFU9bS5HZXRXcmFwTW9kZShpLndy
YXBTKSksdm9pZCAwIT09aS53cmFwVCYmKGgud3JhcFY9bS5HZXRXcmFwTW9kZShpLndyYXBUKSks
aC5uYW1lPXQsYS5iYWJ5bG9uVGV4dHVyZT1oLHIoaCl9fSxlLkxvYWRTaGFkZXJTdHJpbmdBc3lu
Yz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1lLnNoYWRlcnNbdF07aWYocC5Ub29scy5Jc0Jhc2U2
NChvLnVyaSkpe3ZhciBhPWF0b2Ioby51cmkuc3BsaXQoIiwiKVsxXSk7biYmbihhKX1lbHNlIHAu
VG9vbHMuTG9hZEZpbGUoZS5yb290VXJsK28udXJpLG4sdm9pZCAwLHZvaWQgMCwhMSxmdW5jdGlv
bihlKXtlJiZyJiZyKGUuc3RhdHVzKyIgIitlLnN0YXR1c1RleHQpfSl9LGUuTG9hZE1hdGVyaWFs
QXN5bmM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS5tYXRlcmlhbHNbdF07aWYoby50ZWNobmlx
dWUpe3ZhciBhPWUudGVjaG5pcXVlc1tvLnRlY2huaXF1ZV07aWYoIWEpe3ZhciBpPW5ldyBwLlN0
YW5kYXJkTWF0ZXJpYWwodCxlLnNjZW5lKTtyZXR1cm4gaS5kaWZmdXNlQ29sb3I9bmV3IHAuQ29s
b3IzKC41LC41LC41KSxpLnNpZGVPcmllbnRhdGlvbj1wLk1hdGVyaWFsLkNvdW50ZXJDbG9ja1dp
c2VTaWRlT3JpZW50YXRpb24sdm9pZCBuKGkpfXZhciBsPWUucHJvZ3JhbXNbYS5wcm9ncmFtXSx1
PWEuc3RhdGVzLGM9cC5FZmZlY3QuU2hhZGVyc1N0b3JlW2wudmVydGV4U2hhZGVyKyJWZXJ0ZXhT
aGFkZXIiXSxtPXAuRWZmZWN0LlNoYWRlcnNTdG9yZVtsLmZyYWdtZW50U2hhZGVyKyJQaXhlbFNo
YWRlciJdLF89IiIsYj0iIixnPW5ldyB5KGMpLFQ9bmV3IHkobSkseD17fSxFPVtdLE89W10sTT1b
XTtmb3IodmFyIFMgaW4gYS51bmlmb3Jtcyl7dmFyIHc9YS51bmlmb3Jtc1tTXSxOPWEucGFyYW1l
dGVyc1t3XTtpZih4W1NdPU4sIU4uc2VtYW50aWN8fE4ubm9kZXx8Ti5zb3VyY2UpTi50eXBlPT09
cy5TQU1QTEVSXzJEP00ucHVzaChTKTpFLnB1c2goUyk7ZWxzZXt2YXIgUD12LmluZGV4T2YoTi5z
ZW1hbnRpYyk7LTEhPT1QPyhFLnB1c2goQVtQXSksZGVsZXRlIHhbU10pOkUucHVzaChTKX19Zm9y
KHZhciBDIGluIGEuYXR0cmlidXRlcyl7dmFyIFI9YS5hdHRyaWJ1dGVzW0NdO2lmKChWPWEucGFy
YW1ldGVyc1tSXSkuc2VtYW50aWMpe3ZhciBJPUwoVik7SSYmTy5wdXNoKEkpfX1mb3IoOyFnLmlz
RW5kKCkmJmcuZ2V0TmV4dFRva2VuKCk7KXtpZihnLmN1cnJlbnRUb2tlbj09PWguSURFTlRJRklF
Uil7dmFyIEY9ITE7Zm9yKHZhciBDIGluIGEuYXR0cmlidXRlcyl7Uj1hLmF0dHJpYnV0ZXNbQ107
dmFyIFY9YS5wYXJhbWV0ZXJzW1JdO2lmKGcuY3VycmVudElkZW50aWZpZXI9PT1DJiZWLnNlbWFu
dGljKXtfKz1MKFYpLEY9ITA7YnJlYWt9fUZ8fChfKz1CKGcsYSx4KSl9ZWxzZSBfKz1nLmN1cnJl
bnRTdHJpbmd9Zm9yKDshVC5pc0VuZCgpJiZULmdldE5leHRUb2tlbigpOyl7VC5jdXJyZW50VG9r
ZW49PT1oLklERU5USUZJRVI/Yis9QihULGEseCk6Yis9VC5jdXJyZW50U3RyaW5nfXZhciBHPXt2
ZXJ0ZXg6bC52ZXJ0ZXhTaGFkZXIrdCxmcmFnbWVudDpsLmZyYWdtZW50U2hhZGVyK3R9LFU9e2F0
dHJpYnV0ZXM6Tyx1bmlmb3JtczpFLHNhbXBsZXJzOk0sbmVlZEFscGhhQmxlbmRpbmc6dSYmdS5l
bmFibGUmJi0xIT09dS5lbmFibGUuaW5kZXhPZigzMDQyKX07cC5FZmZlY3QuU2hhZGVyc1N0b3Jl
W2wudmVydGV4U2hhZGVyK3QrIlZlcnRleFNoYWRlciJdPV8scC5FZmZlY3QuU2hhZGVyc1N0b3Jl
W2wuZnJhZ21lbnRTaGFkZXIrdCsiUGl4ZWxTaGFkZXIiXT1iO3ZhciBrPW5ldyBwLlNoYWRlck1h
dGVyaWFsKHQsZS5zY2VuZSxHLFUpO2lmKGsub25FcnJvcj1mdW5jdGlvbihlLHQsbil7cmV0dXJu
IGZ1bmN0aW9uKHIsbyl7dC5kaXNwb3NlKCEwKSxuKCJDYW5ub3QgY29tcGlsZSBwcm9ncmFtIG5h
bWVkICIrZS5uYW1lKyIuIEVycm9yOiAiK28rIi4gRGVmYXVsdCBtYXRlcmlhbCB3aWxsIGJlIGFw
cGxpZWQiKX19KGwsayxyKSxrLm9uQ29tcGlsZWQ9RChlLGssYSxvLHgsbiksay5zaWRlT3JpZW50
YXRpb249cC5NYXRlcmlhbC5Db3VudGVyQ2xvY2tXaXNlU2lkZU9yaWVudGF0aW9uLHUmJnUuZnVu
Y3Rpb25zKXt2YXIgSD11LmZ1bmN0aW9ucztILmN1bGxGYWNlJiZILmN1bGxGYWNlWzBdIT09Zi5C
QUNLJiYoay5iYWNrRmFjZUN1bGxpbmc9ITEpO3ZhciBqPUguYmxlbmRGdW5jU2VwYXJhdGU7aiYm
KGpbMF09PT1kLlNSQ19BTFBIQSYmalsxXT09PWQuT05FX01JTlVTX1NSQ19BTFBIQSYmalsyXT09
PWQuT05FJiZqWzNdPT09ZC5PTkU/ay5hbHBoYU1vZGU9cC5Db25zdGFudHMuQUxQSEFfQ09NQklO
RTpqWzBdPT09ZC5PTkUmJmpbMV09PT1kLk9ORSYmalsyXT09PWQuWkVSTyYmalszXT09PWQuT05F
P2suYWxwaGFNb2RlPXAuQ29uc3RhbnRzLkFMUEhBX09ORU9ORTpqWzBdPT09ZC5TUkNfQUxQSEEm
JmpbMV09PT1kLk9ORSYmalsyXT09PWQuWkVSTyYmalszXT09PWQuT05FP2suYWxwaGFNb2RlPXAu
Q29uc3RhbnRzLkFMUEhBX0FERDpqWzBdPT09ZC5aRVJPJiZqWzFdPT09ZC5PTkVfTUlOVVNfU1JD
X0NPTE9SJiZqWzJdPT09ZC5PTkUmJmpbM109PT1kLk9ORT9rLmFscGhhTW9kZT1wLkNvbnN0YW50
cy5BTFBIQV9TVUJUUkFDVDpqWzBdPT09ZC5EU1RfQ09MT1ImJmpbMV09PT1kLlpFUk8mJmpbMl09
PT1kLk9ORSYmalszXT09PWQuT05FP2suYWxwaGFNb2RlPXAuQ29uc3RhbnRzLkFMUEhBX01VTFRJ
UExZOmpbMF09PT1kLlNSQ19BTFBIQSYmalsxXT09PWQuT05FX01JTlVTX1NSQ19DT0xPUiYmalsy
XT09PWQuT05FJiZqWzNdPT09ZC5PTkUmJihrLmFscGhhTW9kZT1wLkNvbnN0YW50cy5BTFBIQV9N
QVhJTUlaRUQpKX19ZWxzZSByJiZyKCJObyB0ZWNobmlxdWUgZm91bmQuIil9LGV9KCksVT1mdW5j
dGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnN0YXRlPW51bGx9cmV0dXJuIGUuUmVnaXN0ZXJFeHRl
bnNpb249ZnVuY3Rpb24odCl7ZS5FeHRlbnNpb25zW3QubmFtZV0/cC5Ub29scy5FcnJvcignVG9v
bCB3aXRoIHRoZSBzYW1lIG5hbWUgIicrdC5uYW1lKyciIGFscmVhZHkgZXhpc3RzJyk6ZS5FeHRl
bnNpb25zW3QubmFtZV09dH0sZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe30sZS5wcm90
b3R5cGUuX2ltcG9ydE1lc2hBc3luYz1mdW5jdGlvbihlLHQsbixyLG8sYSxpKXt2YXIgcz10aGlz
O3JldHVybiB0LnVzZVJpZ2h0SGFuZGVkU3lzdGVtPSEwLGsuTG9hZFJ1bnRpbWVBc3luYyh0LG4s
cixmdW5jdGlvbih0KXt0LmltcG9ydE9ubHlNZXNoZXM9ITAsIiI9PT1lP3QuaW1wb3J0TWVzaGVz
TmFtZXM9W106InN0cmluZyI9PXR5cGVvZiBlP3QuaW1wb3J0TWVzaGVzTmFtZXM9W2VdOiFlfHxl
IGluc3RhbmNlb2YgQXJyYXk/KHQuaW1wb3J0TWVzaGVzTmFtZXM9W10scC5Ub29scy5XYXJuKCJB
cmd1bWVudCBtZXNoZXNOYW1lcyBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIHN0cmluZ1tdIikp
OnQuaW1wb3J0TWVzaGVzTmFtZXM9W2VdLHMuX2NyZWF0ZU5vZGVzKHQpO3ZhciBuPW5ldyBBcnJh
eSxyPW5ldyBBcnJheTtmb3IodmFyIGkgaW4gdC5ub2Rlcyl7dmFyIGw9dC5ub2Rlc1tpXTtsLmJh
Ynlsb25Ob2RlIGluc3RhbmNlb2YgcC5BYnN0cmFjdE1lc2gmJm4ucHVzaChsLmJhYnlsb25Ob2Rl
KX1mb3IodmFyIHUgaW4gdC5za2lucyl7dmFyIGM9dC5za2luc1t1XTtjLmJhYnlsb25Ta2VsZXRv
biBpbnN0YW5jZW9mIHAuU2tlbGV0b24mJnIucHVzaChjLmJhYnlsb25Ta2VsZXRvbil9cy5fbG9h
ZEJ1ZmZlcnNBc3luYyh0LGZ1bmN0aW9uKCl7cy5fbG9hZFNoYWRlcnNBc3luYyh0LGZ1bmN0aW9u
KCl7Vih0KSxGKHQpLCFfLkdMVEZGaWxlTG9hZGVyLkluY3JlbWVudGFsTG9hZGluZyYmbyYmbyhu
LHIpfSl9LGEpLF8uR0xURkZpbGVMb2FkZXIuSW5jcmVtZW50YWxMb2FkaW5nJiZvJiZvKG4scil9
LGkpLCEwfSxlLnByb3RvdHlwZS5pbXBvcnRNZXNoQXN5bmM9ZnVuY3Rpb24oZSx0LG4scixvKXt2
YXIgYT10aGlzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihpLHMpe2EuX2ltcG9ydE1lc2hB
c3luYyhlLHQsbixyLGZ1bmN0aW9uKGUsdCl7aSh7bWVzaGVzOmUscGFydGljbGVTeXN0ZW1zOltd
LHNrZWxldG9uczp0LGFuaW1hdGlvbkdyb3VwczpbXX0pfSxvLGZ1bmN0aW9uKGUpe3MobmV3IEVy
cm9yKGUpKX0pfSl9LGUucHJvdG90eXBlLl9sb2FkQXN5bmM9ZnVuY3Rpb24oZSx0LG4scixvLGEp
e3ZhciBpPXRoaXM7ZS51c2VSaWdodEhhbmRlZFN5c3RlbT0hMCxrLkxvYWRSdW50aW1lQXN5bmMo
ZSx0LG4sZnVuY3Rpb24oZSl7ay5Mb2FkUnVudGltZUV4dGVuc2lvbnNBc3luYyhlLGZ1bmN0aW9u
KCl7aS5fY3JlYXRlTm9kZXMoZSksaS5fbG9hZEJ1ZmZlcnNBc3luYyhlLGZ1bmN0aW9uKCl7aS5f
bG9hZFNoYWRlcnNBc3luYyhlLGZ1bmN0aW9uKCl7VihlKSxGKGUpLF8uR0xURkZpbGVMb2FkZXIu
SW5jcmVtZW50YWxMb2FkaW5nfHxyKCl9KX0pLF8uR0xURkZpbGVMb2FkZXIuSW5jcmVtZW50YWxM
b2FkaW5nJiZyKCl9LGEpfSxhKX0sZS5wcm90b3R5cGUubG9hZEFzeW5jPWZ1bmN0aW9uKGUsdCxu
LHIpe3ZhciBvPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsaSl7by5fbG9hZEFz
eW5jKGUsdCxuLGZ1bmN0aW9uKCl7YSgpfSxyLGZ1bmN0aW9uKGUpe2kobmV3IEVycm9yKGUpKX0p
fSl9LGUucHJvdG90eXBlLl9sb2FkU2hhZGVyc0FzeW5jPWZ1bmN0aW9uKGUsdCl7dmFyIG49ITEs
cj1mdW5jdGlvbihuLHIpe2suTG9hZFNoYWRlclN0cmluZ0FzeW5jKGUsbixmdW5jdGlvbihvKXtv
IGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fChlLmxvYWRlZFNoYWRlckNvdW50KyssbyYmKHAuRWZm
ZWN0LlNoYWRlcnNTdG9yZVtuKyhyLnR5cGU9PT1pLlZFUlRFWD8iVmVydGV4U2hhZGVyIjoiUGl4
ZWxTaGFkZXIiKV09byksZS5sb2FkZWRTaGFkZXJDb3VudD09PWUuc2hhZGVyc2NvdW50JiZ0KCkp
fSxmdW5jdGlvbigpe3AuVG9vbHMuRXJyb3IoIkVycm9yIHdoZW4gbG9hZGluZyBzaGFkZXIgcHJv
Z3JhbSBuYW1lZCAiK24rIiBsb2NhdGVkIGF0ICIrci51cmkpfSl9O2Zvcih2YXIgbyBpbiBlLnNo
YWRlcnMpe249ITA7dmFyIGE9ZS5zaGFkZXJzW29dO2E/ci5iaW5kKHRoaXMsbyxhKSgpOnAuVG9v
bHMuRXJyb3IoIk5vIHNoYWRlciBuYW1lZDogIitvKX1ufHx0KCl9LGUucHJvdG90eXBlLl9sb2Fk
QnVmZmVyc0FzeW5jPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0hMSxvPWZ1bmN0aW9uKG4scil7ay5M
b2FkQnVmZmVyQXN5bmMoZSxuLGZ1bmN0aW9uKG8pe2UubG9hZGVkQnVmZmVyQ291bnQrKyxvJiYo
by5ieXRlTGVuZ3RoIT1lLmJ1ZmZlcnNbbl0uYnl0ZUxlbmd0aCYmcC5Ub29scy5FcnJvcigiQnVm
ZmVyIG5hbWVkICIrbisiIGlzIGxlbmd0aCAiK28uYnl0ZUxlbmd0aCsiLiBFeHBlY3RlZDogIity
LmJ5dGVMZW5ndGgpLGUubG9hZGVkQnVmZmVyVmlld3Nbbl09byksZS5sb2FkZWRCdWZmZXJDb3Vu
dD09PWUuYnVmZmVyc0NvdW50JiZ0KCl9LGZ1bmN0aW9uKCl7cC5Ub29scy5FcnJvcigiRXJyb3Ig
d2hlbiBsb2FkaW5nIGJ1ZmZlciBuYW1lZCAiK24rIiBsb2NhdGVkIGF0ICIrci51cmkpfSl9O2Zv
cih2YXIgYSBpbiBlLmJ1ZmZlcnMpe3I9ITA7dmFyIGk9ZS5idWZmZXJzW2FdO2k/by5iaW5kKHRo
aXMsYSxpKSgpOnAuVG9vbHMuRXJyb3IoIk5vIGJ1ZmZlciBuYW1lZDogIithKX1yfHx0KCl9LGUu
cHJvdG90eXBlLl9jcmVhdGVOb2Rlcz1mdW5jdGlvbihlKXt2YXIgdD1lLmN1cnJlbnRTY2VuZTtp
Zih0KWZvcih2YXIgbj0wO248dC5ub2Rlcy5sZW5ndGg7bisrKUkoZSx0Lm5vZGVzW25dLG51bGwp
O2Vsc2UgZm9yKHZhciByIGluIGUuc2NlbmVzKXt0PWUuc2NlbmVzW3JdO2ZvcihuPTA7bjx0Lm5v
ZGVzLmxlbmd0aDtuKyspSShlLHQubm9kZXNbbl0sbnVsbCl9fSxlLkV4dGVuc2lvbnM9e30sZX0o
KSxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLl9uYW1lPWV9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLl9uYW1lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmxv
YWRSdW50aW1lQXN5bmM9ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4hMX0sZS5wcm90b3R5cGUu
bG9hZFJ1bnRpbWVFeHRlbnNpb25zQXN5bmM9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiExfSxlLnBy
b3RvdHlwZS5sb2FkQnVmZmVyQXN5bmM9ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4hMX0sZS5w
cm90b3R5cGUubG9hZFRleHR1cmVCdWZmZXJBc3luYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4h
MX0sZS5wcm90b3R5cGUuY3JlYXRlVGV4dHVyZUFzeW5jPWZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0
dXJuITF9LGUucHJvdG90eXBlLmxvYWRTaGFkZXJTdHJpbmdBc3luYz1mdW5jdGlvbihlLHQsbixy
KXtyZXR1cm4hMX0sZS5wcm90b3R5cGUubG9hZE1hdGVyaWFsQXN5bmM9ZnVuY3Rpb24oZSx0LG4s
cil7cmV0dXJuITF9LGUuTG9hZFJ1bnRpbWVBc3luYz1mdW5jdGlvbih0LG4scixvLGEpe2UuQXBw
bHlFeHRlbnNpb25zKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxvYWRSdW50aW1lQXN5bmModCxuLHIs
byxhKX0sZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmbyhHLkNyZWF0ZVJ1bnRp
bWUobi5qc29uLHQscikpfSl9KX0sZS5Mb2FkUnVudGltZUV4dGVuc2lvbnNBc3luYz1mdW5jdGlv
bih0LG4scil7ZS5BcHBseUV4dGVuc2lvbnMoZnVuY3Rpb24oZSl7cmV0dXJuIGUubG9hZFJ1bnRp
bWVFeHRlbnNpb25zQXN5bmModCxuLHIpfSxmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24o
KXtuKCl9KX0pfSxlLkxvYWRCdWZmZXJBc3luYz1mdW5jdGlvbih0LG4scixvLGEpe2UuQXBwbHlF
eHRlbnNpb25zKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxvYWRCdWZmZXJBc3luYyh0LG4scixvLGEp
fSxmdW5jdGlvbigpe0cuTG9hZEJ1ZmZlckFzeW5jKHQsbixyLG8sYSl9KX0sZS5Mb2FkVGV4dHVy
ZUFzeW5jPWZ1bmN0aW9uKHQsbixyLG8pe2UuTG9hZFRleHR1cmVCdWZmZXJBc3luYyh0LG4sZnVu
Y3Rpb24oYSl7YSYmZS5DcmVhdGVUZXh0dXJlQXN5bmModCxuLGEscixvKX0sbyl9LGUuTG9hZFNo
YWRlclN0cmluZ0FzeW5jPWZ1bmN0aW9uKHQsbixyLG8pe2UuQXBwbHlFeHRlbnNpb25zKGZ1bmN0
aW9uKGUpe3JldHVybiBlLmxvYWRTaGFkZXJTdHJpbmdBc3luYyh0LG4scixvKX0sZnVuY3Rpb24o
KXtHLkxvYWRTaGFkZXJTdHJpbmdBc3luYyh0LG4scixvKX0pfSxlLkxvYWRNYXRlcmlhbEFzeW5j
PWZ1bmN0aW9uKHQsbixyLG8pe2UuQXBwbHlFeHRlbnNpb25zKGZ1bmN0aW9uKGUpe3JldHVybiBl
LmxvYWRNYXRlcmlhbEFzeW5jKHQsbixyLG8pfSxmdW5jdGlvbigpe0cuTG9hZE1hdGVyaWFsQXN5
bmModCxuLHIsbyl9KX0sZS5Mb2FkVGV4dHVyZUJ1ZmZlckFzeW5jPWZ1bmN0aW9uKHQsbixyLG8p
e2UuQXBwbHlFeHRlbnNpb25zKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxvYWRUZXh0dXJlQnVmZmVy
QXN5bmModCxuLHIsbyl9LGZ1bmN0aW9uKCl7Ry5Mb2FkVGV4dHVyZUJ1ZmZlckFzeW5jKHQsbixy
LG8pfSl9LGUuQ3JlYXRlVGV4dHVyZUFzeW5jPWZ1bmN0aW9uKHQsbixyLG8sYSl7ZS5BcHBseUV4
dGVuc2lvbnMoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY3JlYXRlVGV4dHVyZUFzeW5jKHQsbixyLG8s
YSl9LGZ1bmN0aW9uKCl7Ry5DcmVhdGVUZXh0dXJlQXN5bmModCxuLHIsbyxhKX0pfSxlLkFwcGx5
RXh0ZW5zaW9ucz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBVLkV4dGVuc2lvbnMpe2lmKGUo
VS5FeHRlbnNpb25zW25dKSlyZXR1cm59dCgpfSxlfSgpO18uR0xURkZpbGVMb2FkZXIuX0NyZWF0
ZUdMVEYxTG9hZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBVfTt2YXIgSD1mdW5jdGlvbihlKXtm
dW5jdGlvbiB0KCl7cmV0dXJuIGUuY2FsbCh0aGlzLCJLSFJfYmluYXJ5X2dsVEYiKXx8dGhpc31y
ZXR1cm4gbyh0LGUpLHQucHJvdG90eXBlLmxvYWRSdW50aW1lQXN5bmM9ZnVuY3Rpb24oZSx0LG4s
cixvKXt2YXIgYT10Lmpzb24uZXh0ZW5zaW9uc1VzZWQ7cmV0dXJuISghYXx8LTE9PT1hLmluZGV4
T2YodGhpcy5uYW1lKXx8IXQuYmluKSYmKHRoaXMuX2Jpbj10LmJpbixyKEcuQ3JlYXRlUnVudGlt
ZSh0Lmpzb24sZSxuKSksITApfSx0LnByb3RvdHlwZS5sb2FkQnVmZmVyQXN5bmM9ZnVuY3Rpb24o
ZSx0LG4scil7cmV0dXJuLTEhPT1lLmV4dGVuc2lvbnNVc2VkLmluZGV4T2YodGhpcy5uYW1lKSYm
KCJiaW5hcnlfZ2xURiI9PT10JiYodGhpcy5fYmluLnJlYWRBc3luYygwLHRoaXMuX2Jpbi5ieXRl
TGVuZ3RoKS50aGVuKG4sZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5tZXNzYWdlKX0pLCEwKSl9LHQu
cHJvdG90eXBlLmxvYWRUZXh0dXJlQnVmZmVyQXN5bmM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89
ZS50ZXh0dXJlc1t0XSxpPWUuaW1hZ2VzW28uc291cmNlXTtpZighKGkuZXh0ZW5zaW9ucyYmdGhp
cy5uYW1lIGluIGkuZXh0ZW5zaW9ucykpcmV0dXJuITE7dmFyIHM9aS5leHRlbnNpb25zW3RoaXMu
bmFtZV0sbD1lLmJ1ZmZlclZpZXdzW3MuYnVmZmVyVmlld107cmV0dXJuIG4obS5HZXRCdWZmZXJG
cm9tQnVmZmVyVmlldyhlLGwsMCxsLmJ5dGVMZW5ndGgsYS5VTlNJR05FRF9CWVRFKSksITB9LHQu
cHJvdG90eXBlLmxvYWRTaGFkZXJTdHJpbmdBc3luYz1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1l
LnNoYWRlcnNbdF07aWYoIShvLmV4dGVuc2lvbnMmJnRoaXMubmFtZSBpbiBvLmV4dGVuc2lvbnMp
KXJldHVybiExO3ZhciBpPW8uZXh0ZW5zaW9uc1t0aGlzLm5hbWVdLHM9ZS5idWZmZXJWaWV3c1tp
LmJ1ZmZlclZpZXddLGw9bS5HZXRCdWZmZXJGcm9tQnVmZmVyVmlldyhlLHMsMCxzLmJ5dGVMZW5n
dGgsYS5VTlNJR05FRF9CWVRFKTtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlPW0u
RGVjb2RlQnVmZmVyVG9UZXh0KGwpO24oZSl9KSwhMH0sdH0oayk7VS5SZWdpc3RlckV4dGVuc2lv
bihuZXcgSCk7dmFyIGo9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBlLmNhbGwodGhp
cywiS0hSX21hdGVyaWFsc19jb21tb24iKXx8dGhpc31yZXR1cm4gbyh0LGUpLHQucHJvdG90eXBl
LmxvYWRSdW50aW1lRXh0ZW5zaW9uc0FzeW5jPWZ1bmN0aW9uKGUsdCxuKXtpZighZS5leHRlbnNp
b25zKXJldHVybiExO3ZhciByPWUuZXh0ZW5zaW9uc1t0aGlzLm5hbWVdO2lmKCFyKXJldHVybiEx
O3ZhciBvPXIubGlnaHRzO2lmKG8pZm9yKHZhciBhIGluIG8pe3ZhciBpPW9bYV07c3dpdGNoKGku
dHlwZSl7Y2FzZSJhbWJpZW50Ijp2YXIgcz1uZXcgcC5IZW1pc3BoZXJpY0xpZ2h0KGkubmFtZSxu
ZXcgcC5WZWN0b3IzKDAsMSwwKSxlLnNjZW5lKSxsPWkuYW1iaWVudDtsJiYocy5kaWZmdXNlPXAu
Q29sb3IzLkZyb21BcnJheShsLmNvbG9yfHxbMSwxLDFdKSk7YnJlYWs7Y2FzZSJwb2ludCI6dmFy
IHU9bmV3IHAuUG9pbnRMaWdodChpLm5hbWUsbmV3IHAuVmVjdG9yMygxMCwxMCwxMCksZS5zY2Vu
ZSksYz1pLnBvaW50O2MmJih1LmRpZmZ1c2U9cC5Db2xvcjMuRnJvbUFycmF5KGMuY29sb3J8fFsx
LDEsMV0pKTticmVhaztjYXNlImRpcmVjdGlvbmFsIjp2YXIgZj1uZXcgcC5EaXJlY3Rpb25hbExp
Z2h0KGkubmFtZSxuZXcgcC5WZWN0b3IzKDAsLTEsMCksZS5zY2VuZSksZD1pLmRpcmVjdGlvbmFs
O2QmJihmLmRpZmZ1c2U9cC5Db2xvcjMuRnJvbUFycmF5KGQuY29sb3J8fFsxLDEsMV0pKTticmVh
aztjYXNlInNwb3QiOnZhciBoPWkuc3BvdDtpZihoKW5ldyBwLlNwb3RMaWdodChpLm5hbWUsbmV3
IHAuVmVjdG9yMygwLDEwLDApLG5ldyBwLlZlY3RvcjMoMCwtMSwwKSxoLmZhbGxPZmZBbmdsZXx8
TWF0aC5QSSxoLmZhbGxPZmZFeHBvbmVudHx8MCxlLnNjZW5lKS5kaWZmdXNlPXAuQ29sb3IzLkZy
b21BcnJheShoLmNvbG9yfHxbMSwxLDFdKTticmVhaztkZWZhdWx0OnAuVG9vbHMuV2FybignR0xU
RiBNYXRlcmlhbCBDb21tb24gZXh0ZW5zaW9uOiBsaWdodCB0eXBlICInK2kudHlwZSsi4oCdIG5v
dCBzdXBwb3J0ZWQiKX19cmV0dXJuITF9LHQucHJvdG90eXBlLmxvYWRNYXRlcmlhbEFzeW5jPWZ1
bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUubWF0ZXJpYWxzW3RdO2lmKCFvfHwhby5leHRlbnNpb25z
KXJldHVybiExO3ZhciBhPW8uZXh0ZW5zaW9uc1t0aGlzLm5hbWVdO2lmKCFhKXJldHVybiExO3Zh
ciBpPW5ldyBwLlN0YW5kYXJkTWF0ZXJpYWwodCxlLnNjZW5lKTtyZXR1cm4gaS5zaWRlT3JpZW50
YXRpb249cC5NYXRlcmlhbC5Db3VudGVyQ2xvY2tXaXNlU2lkZU9yaWVudGF0aW9uLCJDT05TVEFO
VCI9PT1hLnRlY2huaXF1ZSYmKGkuZGlzYWJsZUxpZ2h0aW5nPSEwKSxpLmJhY2tGYWNlQ3VsbGlu
Zz12b2lkIDAhPT1hLmRvdWJsZVNpZGVkJiYhYS5kb3VibGVTaWRlZCxpLmFscGhhPXZvaWQgMD09
PWEudmFsdWVzLnRyYW5zcGFyZW5jeT8xOmEudmFsdWVzLnRyYW5zcGFyZW5jeSxpLnNwZWN1bGFy
UG93ZXI9dm9pZCAwPT09YS52YWx1ZXMuc2hpbmluZXNzPzA6YS52YWx1ZXMuc2hpbmluZXNzLCJz
dHJpbmciPT10eXBlb2YgYS52YWx1ZXMuYW1iaWVudD90aGlzLl9sb2FkVGV4dHVyZShlLGEudmFs
dWVzLmFtYmllbnQsaSwiYW1iaWVudFRleHR1cmUiLHIpOmkuYW1iaWVudENvbG9yPXAuQ29sb3Iz
LkZyb21BcnJheShhLnZhbHVlcy5hbWJpZW50fHxbMCwwLDBdKSwic3RyaW5nIj09dHlwZW9mIGEu
dmFsdWVzLmRpZmZ1c2U/dGhpcy5fbG9hZFRleHR1cmUoZSxhLnZhbHVlcy5kaWZmdXNlLGksImRp
ZmZ1c2VUZXh0dXJlIixyKTppLmRpZmZ1c2VDb2xvcj1wLkNvbG9yMy5Gcm9tQXJyYXkoYS52YWx1
ZXMuZGlmZnVzZXx8WzAsMCwwXSksInN0cmluZyI9PXR5cGVvZiBhLnZhbHVlcy5lbWlzc2lvbj90
aGlzLl9sb2FkVGV4dHVyZShlLGEudmFsdWVzLmVtaXNzaW9uLGksImVtaXNzaXZlVGV4dHVyZSIs
cik6aS5lbWlzc2l2ZUNvbG9yPXAuQ29sb3IzLkZyb21BcnJheShhLnZhbHVlcy5lbWlzc2lvbnx8
WzAsMCwwXSksInN0cmluZyI9PXR5cGVvZiBhLnZhbHVlcy5zcGVjdWxhcj90aGlzLl9sb2FkVGV4
dHVyZShlLGEudmFsdWVzLnNwZWN1bGFyLGksInNwZWN1bGFyVGV4dHVyZSIscik6aS5zcGVjdWxh
ckNvbG9yPXAuQ29sb3IzLkZyb21BcnJheShhLnZhbHVlcy5zcGVjdWxhcnx8WzAsMCwwXSksITB9
LHQucHJvdG90eXBlLl9sb2FkVGV4dHVyZT1mdW5jdGlvbihlLHQsbixyLG8pe0cuTG9hZFRleHR1
cmVCdWZmZXJBc3luYyhlLHQsZnVuY3Rpb24oYSl7Ry5DcmVhdGVUZXh0dXJlQXN5bmMoZSx0LGEs
ZnVuY3Rpb24oZSl7cmV0dXJuIG5bcl09ZX0sbyl9LG8pfSx0fShrKTtVLlJlZ2lzdGVyRXh0ZW5z
aW9uKG5ldyBqKSxuLmQodCwiR0xURkJpbmFyeUV4dGVuc2lvbiIsZnVuY3Rpb24oKXtyZXR1cm4g
SH0pLG4uZCh0LCJHTFRGTG9hZGVyQmFzZSIsZnVuY3Rpb24oKXtyZXR1cm4gR30pLG4uZCh0LCJH
TFRGTG9hZGVyIixmdW5jdGlvbigpe3JldHVybiBVfSksbi5kKHQsIkdMVEZMb2FkZXJFeHRlbnNp
b24iLGZ1bmN0aW9uKCl7cmV0dXJuIGt9KSxuLmQodCwiRUNvbXBvbmVudFR5cGUiLGZ1bmN0aW9u
KCl7cmV0dXJuIGF9KSxuLmQodCwiRVNoYWRlclR5cGUiLGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSxu
LmQodCwiRVBhcmFtZXRlclR5cGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSxuLmQodCwiRVRleHR1
cmVXcmFwTW9kZSIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pLG4uZCh0LCJFVGV4dHVyZUZpbHRlclR5
cGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHV9KSxuLmQodCwiRVRleHR1cmVGb3JtYXQiLGZ1bmN0aW9u
KCl7cmV0dXJuIGN9KSxuLmQodCwiRUN1bGxpbmdUeXBlIixmdW5jdGlvbigpe3JldHVybiBmfSks
bi5kKHQsIkVCbGVuZGluZ0Z1bmN0aW9uIixmdW5jdGlvbigpe3JldHVybiBkfSksbi5kKHQsIkdM
VEZVdGlscyIsZnVuY3Rpb24oKXtyZXR1cm4gbX0pLG4uZCh0LCJHTFRGTWF0ZXJpYWxzQ29tbW9u
RXh0ZW5zaW9uIixmdW5jdGlvbigpe3JldHVybiBqfSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7bi5yKHQpO3ZhciByPW4oMCksbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLm1h
dGVyaWFscz1bXX1yZXR1cm4gZS5wcm90b3R5cGUucGFyc2VNVEw9ZnVuY3Rpb24odCxuLG8pe2lm
KCEobiBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSl7Zm9yKHZhciBhLGk9bi5zcGxpdCgiXG4iKSxz
PS9ccysvLGw9bnVsbCx1PTA7dTxpLmxlbmd0aDt1Kyspe3ZhciBjPWlbdV0udHJpbSgpO2lmKDAh
PT1jLmxlbmd0aCYmIiMiIT09Yy5jaGFyQXQoMCkpe3ZhciBmPWMuaW5kZXhPZigiICIpLGQ9Zj49
MD9jLnN1YnN0cmluZygwLGYpOmM7ZD1kLnRvTG93ZXJDYXNlKCk7dmFyIGg9Zj49MD9jLnN1YnN0
cmluZyhmKzEpLnRyaW0oKToiIjsibmV3bXRsIj09PWQ/KGwmJnRoaXMubWF0ZXJpYWxzLnB1c2go
bCksbD1uZXcgci5TdGFuZGFyZE1hdGVyaWFsKGgsdCkpOiJrZCI9PT1kJiZsPyhhPWguc3BsaXQo
cywzKS5tYXAocGFyc2VGbG9hdCksbC5kaWZmdXNlQ29sb3I9ci5Db2xvcjMuRnJvbUFycmF5KGEp
KToia2EiPT09ZCYmbD8oYT1oLnNwbGl0KHMsMykubWFwKHBhcnNlRmxvYXQpLGwuYW1iaWVudENv
bG9yPXIuQ29sb3IzLkZyb21BcnJheShhKSk6ImtzIj09PWQmJmw/KGE9aC5zcGxpdChzLDMpLm1h
cChwYXJzZUZsb2F0KSxsLnNwZWN1bGFyQ29sb3I9ci5Db2xvcjMuRnJvbUFycmF5KGEpKToia2Ui
PT09ZCYmbD8oYT1oLnNwbGl0KHMsMykubWFwKHBhcnNlRmxvYXQpLGwuZW1pc3NpdmVDb2xvcj1y
LkNvbG9yMy5Gcm9tQXJyYXkoYSkpOiJucyI9PT1kJiZsP2wuc3BlY3VsYXJQb3dlcj1wYXJzZUZs
b2F0KGgpOiJkIj09PWQmJmw/bC5hbHBoYT1wYXJzZUZsb2F0KGgpOiJtYXBfa2EiPT09ZCYmbD9s
LmFtYmllbnRUZXh0dXJlPWUuX2dldFRleHR1cmUobyxoLHQpOiJtYXBfa2QiPT09ZCYmbD9sLmRp
ZmZ1c2VUZXh0dXJlPWUuX2dldFRleHR1cmUobyxoLHQpOiJtYXBfa3MiPT09ZCYmbD9sLnNwZWN1
bGFyVGV4dHVyZT1lLl9nZXRUZXh0dXJlKG8saCx0KToibWFwX25zIj09PWR8fCgibWFwX2J1bXAi
PT09ZCYmbD9sLmJ1bXBUZXh0dXJlPWUuX2dldFRleHR1cmUobyxoLHQpOiJtYXBfZCI9PT1kJiZs
JiYobC5vcGFjaXR5VGV4dHVyZT1lLl9nZXRUZXh0dXJlKG8saCx0KSkpfX1sJiZ0aGlzLm1hdGVy
aWFscy5wdXNoKGwpfX0sZS5fZ2V0VGV4dHVyZT1mdW5jdGlvbihlLHQsbil7aWYoIXQpcmV0dXJu
IG51bGw7dmFyIG89ZTtpZigiZmlsZToiPT09ZSl7dmFyIGk9dC5sYXN0SW5kZXhPZigiXFwiKTst
MT09PWkmJihpPXQubGFzdEluZGV4T2YoIi8iKSksbys9aT4tMT90LnN1YnN0cihpKzEpOnR9ZWxz
ZSBvKz10O3JldHVybiBuZXcgci5UZXh0dXJlKG8sbiwhMSxhLklOVkVSVF9URVhUVVJFX1kpfSxl
fSgpLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3RoaXMubmFtZT0ib2JqIix0aGlzLmV4dGVu
c2lvbnM9Ii5vYmoiLHRoaXMub2JqPS9eby8sdGhpcy5ncm91cD0vXmcvLHRoaXMubXRsbGliPS9e
bXRsbGliIC8sdGhpcy51c2VtdGw9L151c2VtdGwgLyx0aGlzLnNtb290aD0vXnMgLyx0aGlzLnZl
cnRleFBhdHRlcm49L3YoICtbXGR8XC58XCt8XC18ZXxFXSspezMsN30vLHRoaXMubm9ybWFsUGF0
dGVybj0vdm4oICtbXGR8XC58XCt8XC18ZXxFXSspKCArW1xkfFwufFwrfFwtfGV8RV0rKSggK1tc
ZHxcLnxcK3xcLXxlfEVdKykvLHRoaXMudXZQYXR0ZXJuPS92dCggK1tcZHxcLnxcK3xcLXxlfEVd
KykoICtbXGR8XC58XCt8XC18ZXxFXSspLyx0aGlzLmZhY2VQYXR0ZXJuMT0vZlxzKygoW1xkXXsx
LH1bXHNdPyl7Myx9KSsvLHRoaXMuZmFjZVBhdHRlcm4yPS9mXHMrKCgoW1xkXXsxLH1cL1tcZF17
MSx9W1xzXT8pezMsfSkrKS8sdGhpcy5mYWNlUGF0dGVybjM9L2ZccysoKChbXGRdezEsfVwvW1xk
XXsxLH1cL1tcZF17MSx9W1xzXT8pezMsfSkrKS8sdGhpcy5mYWNlUGF0dGVybjQ9L2ZccysoKChb
XGRdezEsfVwvXC9bXGRdezEsfVtcc10/KXszLH0pKykvLHRoaXMuZmFjZVBhdHRlcm41PS9mXHMr
KCgoLVtcZF17MSx9XC8tW1xkXXsxLH1cLy1bXGRdezEsfVtcc10/KXszLH0pKykvLHRoaXMuX21l
c2hMb2FkT3B0aW9ucz10fHxlLmN1cnJlbnRNZXNoTG9hZE9wdGlvbnN9cmV0dXJuIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50TWVzaExvYWRPcHRpb25zIix7Z2V0OmZ1bmN0aW9uKCl7
cmV0dXJue0NvbXB1dGVOb3JtYWxzOmUuQ09NUFVURV9OT1JNQUxTLEltcG9ydFZlcnRleENvbG9y
czplLklNUE9SVF9WRVJURVhfQ09MT1JTLEludmVydFk6ZS5JTlZFUlRfWSxJbnZlcnRUZXh0dXJl
WTplLklOVkVSVF9URVhUVVJFX1ksVVZTY2FsaW5nOmUuVVZfU0NBTElORyxNYXRlcmlhbExvYWRp
bmdGYWlsc1NpbGVudGx5OmUuTUFURVJJQUxfTE9BRElOR19GQUlMU19TSUxFTlRMWSxPcHRpbWl6
ZVdpdGhVVjplLk9QVElNSVpFX1dJVEhfVVYsU2tpcE1hdGVyaWFsczplLlNLSVBfTUFURVJJQUxT
fX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5fbG9hZE1UTD1m
dW5jdGlvbihlLHQsbixvKXt2YXIgYT1yLlRvb2xzLkJhc2VVcmwrdCtlO3IuVG9vbHMuTG9hZEZp
bGUoYSxuLHZvaWQgMCx2b2lkIDAsITEsZnVuY3Rpb24oZSx0KXtvKGEsdCl9KX0sZS5wcm90b3R5
cGUuY3JlYXRlUGx1Z2luPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBlKGUuY3VycmVudE1lc2hMb2Fk
T3B0aW9ucyl9LGUucHJvdG90eXBlLmNhbkRpcmVjdExvYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9
LGUucHJvdG90eXBlLmltcG9ydE1lc2hBc3luYz1mdW5jdGlvbihlLHQsbixyLG8sYSl7cmV0dXJu
IHRoaXMuX3BhcnNlU29saWQoZSx0LG4scikudGhlbihmdW5jdGlvbihlKXtyZXR1cm57bWVzaGVz
OmUscGFydGljbGVTeXN0ZW1zOltdLHNrZWxldG9uczpbXSxhbmltYXRpb25Hcm91cHM6W119fSl9
LGUucHJvdG90eXBlLmxvYWRBc3luYz1mdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiB0aGlzLmlt
cG9ydE1lc2hBc3luYyhudWxsLGUsdCxuLHIpLnRoZW4oZnVuY3Rpb24oKXt9KX0sZS5wcm90b3R5
cGUubG9hZEFzc2V0Q29udGFpbmVyQXN5bmM9ZnVuY3Rpb24oZSx0LG4sbyxhKXtyZXR1cm4gdGhp
cy5pbXBvcnRNZXNoQXN5bmMobnVsbCxlLHQsbikudGhlbihmdW5jdGlvbih0KXt2YXIgbj1uZXcg
ci5Bc3NldENvbnRhaW5lcihlKTtyZXR1cm4gdC5tZXNoZXMuZm9yRWFjaChmdW5jdGlvbihlKXty
ZXR1cm4gbi5tZXNoZXMucHVzaChlKX0pLHQubWVzaGVzLmZvckVhY2goZnVuY3Rpb24oZSl7dmFy
IHQ9ZS5tYXRlcmlhbDt0JiYoLTE9PW4ubWF0ZXJpYWxzLmluZGV4T2YodCkmJihuLm1hdGVyaWFs
cy5wdXNoKHQpLHQuZ2V0QWN0aXZlVGV4dHVyZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpey0xPT1u
LnRleHR1cmVzLmluZGV4T2YoZSkmJm4udGV4dHVyZXMucHVzaChlKX0pKSl9KSxuLnJlbW92ZUFs
bEZyb21TY2VuZSgpLG59KX0sZS5wcm90b3R5cGUuX3BhcnNlU29saWQ9ZnVuY3Rpb24odCxuLGEs
aSl7Zm9yKHZhciBzLGw9dGhpcyx1PVtdLGM9W10sZj1bXSxkPVtdLGg9W10scD1bXSxtPVtdLF89
W10seT1bXSx2PVtdLEE9W10sYj0wLGc9ITEsVD1bXSx4PVtdLEw9W10sRT1bXSxPPVtdLE09IiIs
Uz0iIix3PW5ldyBvLE49MSxQPSEwLEM9bmV3IHIuQ29sb3I0KC41LC41LC41LDEpLFI9ZnVuY3Rp
b24oZSx0LG4scixvLGEsaSl7dmFyIHM7LTE9PT0ocz1sLl9tZXNoTG9hZE9wdGlvbnMuT3B0aW1p
emVXaXRoVVY/ZnVuY3Rpb24oZSx0KXtlW3RbMF1dfHwoZVt0WzBdXT17bm9ybWFsczpbXSxpZHg6
W10sdXY6W119KTt2YXIgbj1lW3RbMF1dLm5vcm1hbHMuaW5kZXhPZih0WzFdKTtyZXR1cm4gMSE9
biYmdFsyXT09PWVbdFswXV0udXZbbl0/ZVt0WzBdXS5pZHhbbl06LTF9KEEsW2Usbix0XSk6ZnVu
Y3Rpb24oZSx0KXtlW3RbMF1dfHwoZVt0WzBdXT17bm9ybWFsczpbXSxpZHg6W119KTt2YXIgbj1l
W3RbMF1dLm5vcm1hbHMuaW5kZXhPZih0WzFdKTtyZXR1cm4tMT09PW4/LTE6ZVt0WzBdXS5pZHhb
bl19KEEsW2Usbl0pKT8ocC5wdXNoKG0ubGVuZ3RoKSxtLnB1c2gociksXy5wdXNoKG8pLHYucHVz
aChhKSx2b2lkIDAhPT1pJiZ5LnB1c2goaSksQVtlXS5ub3JtYWxzLnB1c2gobiksQVtlXS5pZHgu
cHVzaChiKyspLGwuX21lc2hMb2FkT3B0aW9ucy5PcHRpbWl6ZVdpdGhVViYmQVtlXS51di5wdXNo
KHQpKTpwLnB1c2gocyl9LEk9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPG0ubGVuZ3RoO2UrKylU
LnB1c2gobVtlXS54LG1bZV0ueSxtW2VdLnopLEwucHVzaCh2W2VdLngsdltlXS55LHZbZV0ueiks
RS5wdXNoKF9bZV0ueCxfW2VdLnkpOyEwPT09bC5fbWVzaExvYWRPcHRpb25zLkltcG9ydFZlcnRl
eENvbG9ycyYmeC5wdXNoKHlbZV0ucix5W2VdLmcseVtlXS5iLHlbZV0uYSksbT1bXSx2PVtdLF89
W10seT1bXSxBPVtdLGI9MH0sRj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10O248ZS5sZW5ndGgt
MTtuKyspTy5wdXNoKGVbMF0sZVtuXSxlW24rMV0pfSxEPWZ1bmN0aW9uKGUsdCl7RihlLHQpO2Zv
cih2YXIgbj0wO248Ty5sZW5ndGg7bisrKXt2YXIgbz1wYXJzZUludChPW25dKS0xO1IobywwLDAs
dVtvXSxyLlZlY3RvcjIuWmVybygpLHIuVmVjdG9yMy5VcCgpLCEwPT09bC5fbWVzaExvYWRPcHRp
b25zLkltcG9ydFZlcnRleENvbG9ycz9kW29dOnZvaWQgMCl9Tz1bXX0sQj1mdW5jdGlvbihlLHQp
e0YoZSx0KTtmb3IodmFyIG49MDtuPE8ubGVuZ3RoO24rKyl7dmFyIG89T1tuXS5zcGxpdCgiLyIp
LGE9cGFyc2VJbnQob1swXSktMSxpPXBhcnNlSW50KG9bMV0pLTE7UihhLGksMCx1W2FdLGZbaV0s
ci5WZWN0b3IzLlVwKCksITA9PT1sLl9tZXNoTG9hZE9wdGlvbnMuSW1wb3J0VmVydGV4Q29sb3Jz
P2RbYV06dm9pZCAwKX1PPVtdfSxWPWZ1bmN0aW9uKGUsdCl7RihlLHQpO2Zvcih2YXIgbj0wO248
Ty5sZW5ndGg7bisrKXt2YXIgcj1PW25dLnNwbGl0KCIvIiksbz1wYXJzZUludChyWzBdKS0xLGE9
cGFyc2VJbnQoclsxXSktMSxpPXBhcnNlSW50KHJbMl0pLTE7UihvLGEsaSx1W29dLGZbYV0sY1tp
XSl9Tz1bXX0sRz1mdW5jdGlvbihlLHQpe0YoZSx0KTtmb3IodmFyIG49MDtuPE8ubGVuZ3RoO24r
Kyl7dmFyIG89T1tuXS5zcGxpdCgiLy8iKSxhPXBhcnNlSW50KG9bMF0pLTEsaT1wYXJzZUludChv
WzFdKS0xO1IoYSwxLGksdVthXSxyLlZlY3RvcjIuWmVybygpLGNbaV0sITA9PT1sLl9tZXNoTG9h
ZE9wdGlvbnMuSW1wb3J0VmVydGV4Q29sb3JzP2RbYV06dm9pZCAwKX1PPVtdfSxVPWZ1bmN0aW9u
KGUsdCl7RihlLHQpO2Zvcih2YXIgbj0wO248Ty5sZW5ndGg7bisrKXt2YXIgcj1PW25dLnNwbGl0
KCIvIiksbz11Lmxlbmd0aCtwYXJzZUludChyWzBdKSxhPWYubGVuZ3RoK3BhcnNlSW50KHJbMV0p
LGk9Yy5sZW5ndGgrcGFyc2VJbnQoclsyXSk7UihvLGEsaSx1W29dLGZbYV0sY1tpXSwhMD09PWwu
X21lc2hMb2FkT3B0aW9ucy5JbXBvcnRWZXJ0ZXhDb2xvcnM/ZFtvXTp2b2lkIDApfU89W119LGs9
ZnVuY3Rpb24oKXtoLmxlbmd0aD4wJiYocz1oW2gubGVuZ3RoLTFdLEkoKSxwLnJldmVyc2UoKSxz
LmluZGljZXM9cC5zbGljZSgpLHMucG9zaXRpb25zPVQuc2xpY2UoKSxzLm5vcm1hbHM9TC5zbGlj
ZSgpLHMudXZzPUUuc2xpY2UoKSwhMD09PWwuX21lc2hMb2FkT3B0aW9ucy5JbXBvcnRWZXJ0ZXhD
b2xvcnMmJihzLmNvbG9ycz14LnNsaWNlKCkpLHA9W10sVD1bXSx4PVtdLEw9W10sRT1bXSl9LEg9
YS5zcGxpdCgiXG4iKSxqPTA7ajxILmxlbmd0aDtqKyspe3ZhciBXLEs9SFtqXS50cmltKCkucmVw
bGFjZSgvXHNccy9nLCIgIik7aWYoMCE9PUsubGVuZ3RoJiYiIyIhPT1LLmNoYXJBdCgwKSlpZih0
aGlzLnZlcnRleFBhdHRlcm4udGVzdChLKSlXPUsubWF0Y2goL1teIF0rL2cpLHUucHVzaChuZXcg
ci5WZWN0b3IzKHBhcnNlRmxvYXQoV1sxXSkscGFyc2VGbG9hdChXWzJdKSxwYXJzZUZsb2F0KFdb
M10pKSksITA9PT10aGlzLl9tZXNoTG9hZE9wdGlvbnMuSW1wb3J0VmVydGV4Q29sb3JzJiYoVy5s
ZW5ndGg+PTc/ZC5wdXNoKG5ldyByLkNvbG9yNChwYXJzZUZsb2F0KFdbNF0pLHBhcnNlRmxvYXQo
V1s1XSkscGFyc2VGbG9hdChXWzZdKSw3PT09Vy5sZW5ndGh8fHZvaWQgMD09PVdbN10/MTpwYXJz
ZUZsb2F0KFdbN10pKSk6ZC5wdXNoKEMpKTtlbHNlIGlmKG51bGwhPT0oVz10aGlzLm5vcm1hbFBh
dHRlcm4uZXhlYyhLKSkpYy5wdXNoKG5ldyByLlZlY3RvcjMocGFyc2VGbG9hdChXWzFdKSxwYXJz
ZUZsb2F0KFdbMl0pLHBhcnNlRmxvYXQoV1szXSkpKTtlbHNlIGlmKG51bGwhPT0oVz10aGlzLnV2
UGF0dGVybi5leGVjKEspKSlmLnB1c2gobmV3IHIuVmVjdG9yMihwYXJzZUZsb2F0KFdbMV0pKmUu
VVZfU0NBTElORy54LHBhcnNlRmxvYXQoV1syXSkqZS5VVl9TQ0FMSU5HLnkpKTtlbHNlIGlmKG51
bGwhPT0oVz10aGlzLmZhY2VQYXR0ZXJuMy5leGVjKEspKSlWKFdbMV0udHJpbSgpLnNwbGl0KCIg
IiksMSk7ZWxzZSBpZihudWxsIT09KFc9dGhpcy5mYWNlUGF0dGVybjQuZXhlYyhLKSkpRyhXWzFd
LnRyaW0oKS5zcGxpdCgiICIpLDEpO2Vsc2UgaWYobnVsbCE9PShXPXRoaXMuZmFjZVBhdHRlcm41
LmV4ZWMoSykpKVUoV1sxXS50cmltKCkuc3BsaXQoIiAiKSwxKTtlbHNlIGlmKG51bGwhPT0oVz10
aGlzLmZhY2VQYXR0ZXJuMi5leGVjKEspKSlCKFdbMV0udHJpbSgpLnNwbGl0KCIgIiksMSk7ZWxz
ZSBpZihudWxsIT09KFc9dGhpcy5mYWNlUGF0dGVybjEuZXhlYyhLKSkpRChXWzFdLnRyaW0oKS5z
cGxpdCgiICIpLDEpO2Vsc2UgaWYodGhpcy5ncm91cC50ZXN0KEspfHx0aGlzLm9iai50ZXN0KEsp
KXt2YXIgWT17bmFtZTpLLnN1YnN0cmluZygyKS50cmltKCksaW5kaWNlczp2b2lkIDAscG9zaXRp
b25zOnZvaWQgMCxub3JtYWxzOnZvaWQgMCx1dnM6dm9pZCAwLGNvbG9yczp2b2lkIDAsbWF0ZXJp
YWxOYW1lOiIifTtrKCksaC5wdXNoKFkpLGc9ITAsUD0hMCxOPTF9ZWxzZSBpZih0aGlzLnVzZW10
bC50ZXN0KEspKXtpZihNPUsuc3Vic3RyaW5nKDcpLnRyaW0oKSwhUCl7aygpO1k9e25hbWU6Il9t
bSIrTi50b1N0cmluZygpLGluZGljZXM6dm9pZCAwLHBvc2l0aW9uczp2b2lkIDAsbm9ybWFsczp2
b2lkIDAsdXZzOnZvaWQgMCxjb2xvcnM6dm9pZCAwLG1hdGVyaWFsTmFtZTpNfTtOKyssaC5wdXNo
KFkpfWcmJlAmJihoW2gubGVuZ3RoLTFdLm1hdGVyaWFsTmFtZT1NLFA9ITEpfWVsc2UgdGhpcy5t
dGxsaWIudGVzdChLKT9TPUsuc3Vic3RyaW5nKDcpLnRyaW0oKTp0aGlzLnNtb290aC50ZXN0KEsp
fHxjb25zb2xlLmxvZygiVW5oYW5kbGVkIGV4cHJlc3Npb24gYXQgbGluZSA6ICIrSyl9ZyYmKHM9
aFtoLmxlbmd0aC0xXSxwLnJldmVyc2UoKSxJKCkscy5pbmRpY2VzPXAscy5wb3NpdGlvbnM9VCxz
Lm5vcm1hbHM9TCxzLnV2cz1FLCEwPT09dGhpcy5fbWVzaExvYWRPcHRpb25zLkltcG9ydFZlcnRl
eENvbG9ycyYmKHMuY29sb3JzPXgpKSxnfHwocC5yZXZlcnNlKCksSSgpLGgucHVzaCh7bmFtZTpy
Lkdlb21ldHJ5LlJhbmRvbUlkKCksaW5kaWNlczpwLHBvc2l0aW9uczpULGNvbG9yczp4LG5vcm1h
bHM6TCx1dnM6RSxtYXRlcmlhbE5hbWU6TX0pKTtmb3IodmFyIEo9W10sWj1uZXcgQXJyYXksUT0w
O1E8aC5sZW5ndGg7USsrKXtpZih0JiZoW1FdLm5hbWUpaWYodCBpbnN0YW5jZW9mIEFycmF5KXtp
ZigtMT09PXQuaW5kZXhPZihoW1FdLm5hbWUpKWNvbnRpbnVlfWVsc2UgaWYoaFtRXS5uYW1lIT09
dCljb250aW51ZTtzPWhbUV07dmFyIHE9bmV3IHIuTWVzaChoW1FdLm5hbWUsbik7Wi5wdXNoKGhb
UV0ubWF0ZXJpYWxOYW1lKTt2YXIgWD1uZXcgci5WZXJ0ZXhEYXRhO2lmKFgudXZzPXMudXZzLFgu
aW5kaWNlcz1zLmluZGljZXMsWC5wb3NpdGlvbnM9cy5wb3NpdGlvbnMsITA9PT10aGlzLl9tZXNo
TG9hZE9wdGlvbnMuQ29tcHV0ZU5vcm1hbHMpe3ZhciB6PW5ldyBBcnJheTtyLlZlcnRleERhdGEu
Q29tcHV0ZU5vcm1hbHMocy5wb3NpdGlvbnMscy5pbmRpY2VzLHopLFgubm9ybWFscz16fWVsc2Ug
WC5ub3JtYWxzPXMubm9ybWFsczshMD09PXRoaXMuX21lc2hMb2FkT3B0aW9ucy5JbXBvcnRWZXJ0
ZXhDb2xvcnMmJihYLmNvbG9ycz1zLmNvbG9ycyksWC5hcHBseVRvTWVzaChxKSx0aGlzLl9tZXNo
TG9hZE9wdGlvbnMuSW52ZXJ0WSYmKHEuc2NhbGluZy55Kj0tMSksSi5wdXNoKHEpfXZhciAkPVtd
O3JldHVybiIiIT09UyYmITE9PT10aGlzLl9tZXNoTG9hZE9wdGlvbnMuU2tpcE1hdGVyaWFscyYm
JC5wdXNoKG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7bC5fbG9hZE1UTChTLGksZnVuY3Rpb24o
byl7dHJ5e3cucGFyc2VNVEwobixvLGkpO2Zvcih2YXIgYT0wO2E8dy5tYXRlcmlhbHMubGVuZ3Ro
O2ErKyl7Zm9yKHZhciBzLHU9MCxjPVtdOyhzPVouaW5kZXhPZih3Lm1hdGVyaWFsc1thXS5uYW1l
LHUpKT4tMTspYy5wdXNoKHMpLHU9cysxO2lmKC0xPT09cyYmMD09PWMubGVuZ3RoKXcubWF0ZXJp
YWxzW2FdLmRpc3Bvc2UoKTtlbHNlIGZvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7ZisrKUpbY1tmXV0u
bWF0ZXJpYWw9dy5tYXRlcmlhbHNbYV19ZSgpfWNhdGNoKG4pe3IuVG9vbHMuV2FybigiRXJyb3Ig
cHJvY2Vzc2luZyBNVEwgZmlsZTogJyIrUysiJyIpLGwuX21lc2hMb2FkT3B0aW9ucy5NYXRlcmlh
bExvYWRpbmdGYWlsc1NpbGVudGx5P2UoKTp0KG4pfX0sZnVuY3Rpb24obixvKXtyLlRvb2xzLldh
cm4oIkVycm9yIGRvd25sb2FkaW5nIE1UTCBmaWxlOiAnIitTKyInIiksbC5fbWVzaExvYWRPcHRp
b25zLk1hdGVyaWFsTG9hZGluZ0ZhaWxzU2lsZW50bHk/ZSgpOnQobyl9KX0pKSxQcm9taXNlLmFs
bCgkKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIEp9KX0sZS5PUFRJTUlaRV9XSVRIX1VWPSEwLGUu
SU5WRVJUX1k9ITEsZS5JTlZFUlRfVEVYVFVSRV9ZPSEwLGUuSU1QT1JUX1ZFUlRFWF9DT0xPUlM9
ITEsZS5DT01QVVRFX05PUk1BTFM9ITEsZS5VVl9TQ0FMSU5HPW5ldyByLlZlY3RvcjIoMSwxKSxl
LlNLSVBfTUFURVJJQUxTPSExLGUuTUFURVJJQUxfTE9BRElOR19GQUlMU19TSUxFTlRMWT0hMCxl
fSgpO3IuU2NlbmVMb2FkZXImJnIuU2NlbmVMb2FkZXIuUmVnaXN0ZXJQbHVnaW4obmV3IGEpLG4u
ZCh0LCJNVExGaWxlTG9hZGVyIixmdW5jdGlvbigpe3JldHVybiBvfSksbi5kKHQsIk9CSkZpbGVM
b2FkZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtuLnIodCk7dmFyIHI9bigwKSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuc29saWRQ
YXR0ZXJuPS9zb2xpZCAoXFMqKShbXFNcc10qKWVuZHNvbGlkWyBdKihcUyopL2csdGhpcy5mYWNl
dHNQYXR0ZXJuPS9mYWNldChbXHNcU10qPyllbmRmYWNldC9nLHRoaXMubm9ybWFsUGF0dGVybj0v
bm9ybWFsW1xzXSsoW1wtK10/WzAtOV0rXC4/WzAtOV0qKFtlRV1bXC0rXT9bMC05XSspPykrW1xz
XSsoW1wtK10/WzAtOV0qXC4/WzAtOV0rKFtlRV1bXC0rXT9bMC05XSspPykrW1xzXSsoW1wtK10/
WzAtOV0qXC4/WzAtOV0rKFtlRV1bXC0rXT9bMC05XSspPykrL2csdGhpcy52ZXJ0ZXhQYXR0ZXJu
PS92ZXJ0ZXhbXHNdKyhbXC0rXT9bMC05XStcLj9bMC05XSooW2VFXVtcLStdP1swLTldKyk/KStb
XHNdKyhbXC0rXT9bMC05XSpcLj9bMC05XSsoW2VFXVtcLStdP1swLTldKyk/KStbXHNdKyhbXC0r
XT9bMC05XSpcLj9bMC05XSsoW2VFXVtcLStdP1swLTldKyk/KSsvZyx0aGlzLm5hbWU9InN0bCIs
dGhpcy5leHRlbnNpb25zPXsiLnN0bCI6e2lzQmluYXJ5OiEwfX19cmV0dXJuIGUucHJvdG90eXBl
LmltcG9ydE1lc2g9ZnVuY3Rpb24oZSx0LG4sbyxhLGkscyl7dmFyIGw7aWYoInN0cmluZyIhPXR5
cGVvZiBuKXtpZih0aGlzLl9pc0JpbmFyeShuKSl7dmFyIHU9bmV3IHIuTWVzaCgic3RsbWVzaCIs
dCk7cmV0dXJuIHRoaXMuX3BhcnNlQmluYXJ5KHUsbiksYSYmYS5wdXNoKHUpLCEwfWZvcih2YXIg
Yz1uZXcgVWludDhBcnJheShuKSxmPSIiLGQ9MDtkPG4uYnl0ZUxlbmd0aDtkKyspZis9U3RyaW5n
LmZyb21DaGFyQ29kZShjW2RdKTtuPWZ9Zm9yKDtsPXRoaXMuc29saWRQYXR0ZXJuLmV4ZWMobik7
KXt2YXIgaD1sWzFdO2lmKGghPWxbM10pcmV0dXJuIHIuVG9vbHMuRXJyb3IoIkVycm9yIGluIFNU
TCwgc29saWQgbmFtZSAhPSBlbmRzb2xpZCBuYW1lIiksITE7aWYoZSYmaClpZihlIGluc3RhbmNl
b2YgQXJyYXkpe2lmKCFlLmluZGV4T2YoaCkpY29udGludWV9ZWxzZSBpZihoIT09ZSljb250aW51
ZTtoPWh8fCJzdGxtZXNoIjt1PW5ldyByLk1lc2goaCx0KTt0aGlzLl9wYXJzZUFTQ0lJKHUsbFsy
XSksYSYmYS5wdXNoKHUpfXJldHVybiEwfSxlLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gdGhpcy5pbXBvcnRNZXNoKG51bGwsZSx0LG4sbnVsbCxudWxsLG51bGwpfSxlLnBy
b3RvdHlwZS5sb2FkQXNzZXRDb250YWluZXI9ZnVuY3Rpb24oZSx0LG4sbyl7dmFyIGE9bmV3IHIu
QXNzZXRDb250YWluZXIoZSk7cmV0dXJuIHRoaXMuaW1wb3J0TWVzaChudWxsLGUsdCxuLGEubWVz
aGVzLG51bGwsbnVsbCksYS5yZW1vdmVBbGxGcm9tU2NlbmUoKSxhfSxlLnByb3RvdHlwZS5faXNC
aW5hcnk9ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoNTAsODQrNTAqKHQ9bmV3IERhdGFWaWV3KGUpKS5n
ZXRVaW50MzIoODAsITApPT09dC5ieXRlTGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgbj10LmJ5dGVM
ZW5ndGgscj0wO3I8bjtyKyspaWYodC5nZXRVaW50OChyKT4xMjcpcmV0dXJuITA7cmV0dXJuITF9
LGUucHJvdG90eXBlLl9wYXJzZUJpbmFyeT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1uZXcgRGF0
YVZpZXcodCksbz1uLmdldFVpbnQzMig4MCwhMCksYT0wLGk9bmV3IEZsb2F0MzJBcnJheSgzKm8q
Mykscz1uZXcgRmxvYXQzMkFycmF5KDMqbyozKSxsPW5ldyBVaW50MzJBcnJheSgzKm8pLHU9MCxj
PTA7YzxvO2MrKyl7Zm9yKHZhciBmPTg0KzUwKmMsZD1uLmdldEZsb2F0MzIoZiwhMCksaD1uLmdl
dEZsb2F0MzIoZis0LCEwKSxwPW4uZ2V0RmxvYXQzMihmKzgsITApLG09MTttPD0zO20rKyl7dmFy
IF89ZisxMiptO2lbYV09bi5nZXRGbG9hdDMyKF8sITApLGlbYSsyXT1uLmdldEZsb2F0MzIoXys0
LCEwKSxpW2ErMV09bi5nZXRGbG9hdDMyKF8rOCwhMCksc1thXT1kLHNbYSsyXT1oLHNbYSsxXT1w
LGErPTN9bFt1XT11KyssbFt1XT11KyssbFt1XT11Kyt9ZS5zZXRWZXJ0aWNlc0RhdGEoci5WZXJ0
ZXhCdWZmZXIuUG9zaXRpb25LaW5kLGkpLGUuc2V0VmVydGljZXNEYXRhKHIuVmVydGV4QnVmZmVy
Lk5vcm1hbEtpbmQscyksZS5zZXRJbmRpY2VzKGwpLGUuY29tcHV0ZVdvcmxkTWF0cml4KCEwKX0s
ZS5wcm90b3R5cGUuX3BhcnNlQVNDSUk9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4sbz1bXSxhPVtd
LGk9W10scz0wO249dGhpcy5mYWNldHNQYXR0ZXJuLmV4ZWModCk7KXt2YXIgbD1uWzFdLHU9dGhp
cy5ub3JtYWxQYXR0ZXJuLmV4ZWMobCk7aWYodGhpcy5ub3JtYWxQYXR0ZXJuLmxhc3RJbmRleD0w
LHUpe2Zvcih2YXIgYyxmPVtOdW1iZXIodVsxXSksTnVtYmVyKHVbNV0pLE51bWJlcih1WzNdKV07
Yz10aGlzLnZlcnRleFBhdHRlcm4uZXhlYyhsKTspby5wdXNoKE51bWJlcihjWzFdKSxOdW1iZXIo
Y1s1XSksTnVtYmVyKGNbM10pKSxhLnB1c2goZlswXSxmWzFdLGZbMl0pO2kucHVzaChzKysscysr
LHMrKyksdGhpcy52ZXJ0ZXhQYXR0ZXJuLmxhc3RJbmRleD0wfX10aGlzLmZhY2V0c1BhdHRlcm4u
bGFzdEluZGV4PTAsZS5zZXRWZXJ0aWNlc0RhdGEoci5WZXJ0ZXhCdWZmZXIuUG9zaXRpb25LaW5k
LG8pLGUuc2V0VmVydGljZXNEYXRhKHIuVmVydGV4QnVmZmVyLk5vcm1hbEtpbmQsYSksZS5zZXRJ
bmRpY2VzKGkpLGUuY29tcHV0ZVdvcmxkTWF0cml4KCEwKX0sZX0oKTtyLlNjZW5lTG9hZGVyJiZy
LlNjZW5lTG9hZGVyLlJlZ2lzdGVyUGx1Z2luKG5ldyBvKSxuLmQodCwiU1RMRmlsZUxvYWRlciIs
ZnVuY3Rpb24oKXtyZXR1cm4gb30pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5j
dGlvbihlKXt2YXIgcj1uKDIpO24uZCh0LCJhIixmdW5jdGlvbigpe3JldHVybiByLkdMVEZGaWxl
TG9hZGVyfSksbi5kKHQsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIHIuR0xURkxvYWRlckFuaW1hdGlv
blN0YXJ0TW9kZX0pLG4uZCh0LCJjIixmdW5jdGlvbigpe3JldHVybiByLkdMVEZMb2FkZXJDb29y
ZGluYXRlU3lzdGVtTW9kZX0pLG4uZCh0LCJkIixmdW5jdGlvbigpe3JldHVybiByLkdMVEZMb2Fk
ZXJTdGF0ZX0pO3ZhciBvPXZvaWQgMCE9PWU/ZToidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93
aW5kb3c6dm9pZCAwO2lmKHZvaWQgMCE9PW8pZm9yKHZhciBhIGluIG8uQkFCWUxPTj1vLkJBQllM
T058fHt9LHIpby5CQUJZTE9OW2FdPXJbYV19KS5jYWxsKHRoaXMsbigzKSl9LGZ1bmN0aW9uKGUs
dCl7fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXt2YXIgcj1uKDYp
O24uZCh0LCJhIixmdW5jdGlvbigpe3JldHVybiByfSk7dmFyIG89dm9pZCAwIT09ZT9lOiJ1bmRl
ZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDA7aWYodm9pZCAwIT09bylmb3IodmFy
IGEgaW4gby5CQUJZTE9OPW8uQkFCWUxPTnx8e30sby5CQUJZTE9OLkdMVEYxPW8uQkFCWUxPTi5H
TFRGMXx8e30scilvLkJBQllMT04uR0xURjFbYV09clthXX0pLmNhbGwodGhpcyxuKDMpKX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSl7dmFyIHI9big0KSxvPW4oMTAp
LGE9big1KTtuLmQodCwiYSIsZnVuY3Rpb24oKXtyZXR1cm4gYX0pO3ZhciBpPXZvaWQgMCE9PWU/
ZToidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwO2lmKHZvaWQgMCE9PWkp
e2kuQkFCWUxPTj1pLkJBQllMT058fHt9O3ZhciBzPWkuQkFCWUxPTjtzLkdMVEYyPXMuR0xURjJ8
fHt9LHMuR0xURjIuTG9hZGVyPXMuR0xURjIuTG9hZGVyfHx7fSxzLkdMVEYyLkxvYWRlci5FeHRl
bnNpb25zPXMuR0xURjIuTG9hZGVyLkV4dGVuc2lvbnN8fHt9O3ZhciBsPVtdO2Zvcih2YXIgdSBp
biByKXMuR0xURjIuTG9hZGVyLkV4dGVuc2lvbnNbdV09clt1XSxsLnB1c2godSk7Zm9yKHZhciB1
IGluIG8pcy5HTFRGMi5Mb2FkZXJbdV09b1t1XSxsLnB1c2godSk7Zm9yKHZhciB1IGluIGEpbC5p
bmRleE9mKHUpPi0xfHwocy5HTFRGMlt1XT1hW3VdKX19KS5jYWxsKHRoaXMsbigzKSl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5yKHQpLGZ1bmN0aW9uKGUpe3ZhciByPW4oNyk7bi5k
KHQsIk1UTEZpbGVMb2FkZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHIuTVRMRmlsZUxvYWRlcn0pLG4u
ZCh0LCJPQkpGaWxlTG9hZGVyIixmdW5jdGlvbigpe3JldHVybiByLk9CSkZpbGVMb2FkZXJ9KTt2
YXIgbz12b2lkIDAhPT1lP2U6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQg
MDtpZih2b2lkIDAhPT1vKWZvcih2YXIgYSBpbiByKW8uQkFCWUxPTlthXT1yW2FdfS5jYWxsKHRo
aXMsbigzKSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7bi5yKHQpLGZ1bmN0aW9uKGUp
e3ZhciByPW4oOCk7bi5kKHQsIlNUTEZpbGVMb2FkZXIiLGZ1bmN0aW9uKCl7cmV0dXJuIHIuU1RM
RmlsZUxvYWRlcn0pO3ZhciBvPXZvaWQgMCE9PWU/ZToidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRv
dz93aW5kb3c6dm9pZCAwO2lmKHZvaWQgMCE9PW8pZm9yKHZhciBhIGluIHIpby5CQUJZTE9OW2Fd
PXJbYV19LmNhbGwodGhpcyxuKDMpKX0sLCwsZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtu
LnIodCk7bigyKSxuKDYpLG4oNSksbig3KSxuKDgpO3ZhciByPW4oOSksbz1uKDExKSxhPW4oMTIp
LGk9bigxMykscz1uKDE0KTtuLmQodCwiR0xURkxvYWRlckNvb3JkaW5hdGVTeXN0ZW1Nb2RlIixm
dW5jdGlvbigpe3JldHVybiByLmN9KSxuLmQodCwiR0xURkxvYWRlckFuaW1hdGlvblN0YXJ0TW9k
ZSIsZnVuY3Rpb24oKXtyZXR1cm4gci5ifSksbi5kKHQsIkdMVEZMb2FkZXJTdGF0ZSIsZnVuY3Rp
b24oKXtyZXR1cm4gci5kfSksbi5kKHQsIkdMVEZGaWxlTG9hZGVyIixmdW5jdGlvbigpe3JldHVy
biByLmF9KSxuLmQodCwiR0xURjEiLGZ1bmN0aW9uKCl7cmV0dXJuIG8uYX0pLG4uZCh0LCJHTFRG
MiIsZnVuY3Rpb24oKXtyZXR1cm4gYS5hfSksbi5kKHQsIk1UTEZpbGVMb2FkZXIiLGZ1bmN0aW9u
KCl7cmV0dXJuIGkuTVRMRmlsZUxvYWRlcn0pLG4uZCh0LCJPQkpGaWxlTG9hZGVyIixmdW5jdGlv
bigpe3JldHVybiBpLk9CSkZpbGVMb2FkZXJ9KSxuLmQodCwiU1RMRmlsZUxvYWRlciIsZnVuY3Rp
b24oKXtyZXR1cm4gcy5TVExGaWxlTG9hZGVyfSl9XSl9KTsKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3dlYmtpdC5vcmcvZGVtb3Mvd2ViZ3B1L2JhYnlsb24vb25lSGVsbWV0V2ViR1BVLmh0bWwgYi9X
ZWJzaXRlcy93ZWJraXQub3JnL2RlbW9zL3dlYmdwdS9iYWJ5bG9uL29uZUhlbG1ldFdlYkdQVS5o
dG1sCmluZGV4IDgyMjNjMzM1YTc2OTg2YzA5YTMyMzdiZjE1ZGVmMjk1NWE5YWFkOTguLjg3ODY3
ZTYwZDZhODFlMGE3ZTA0NGJlN2I2NjJiN2M5ODUwOWRlMjggMTAwNjQ0Ci0tLSBhL1dlYnNpdGVz
L3dlYmtpdC5vcmcvZGVtb3Mvd2ViZ3B1L2JhYnlsb24vb25lSGVsbWV0V2ViR1BVLmh0bWwKKysr
IGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kZW1vcy93ZWJncHUvYmFieWxvbi9vbmVIZWxtZXRXZWJH
UFUuaHRtbApAQCAtOTYsNyArOTYsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NvZGUu
anF1ZXJ5LmNvbS9wZXAvMC40LjIvcGVwLm1pbi5qcyI+PC9zY3JpcHQ+CiAKICAgICA8c2NyaXB0
IHNyYz0iYmFieWxvbldlYkdwdS5tYXguanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJo
dHRwczovL3ByZXZpZXcuYmFieWxvbmpzLmNvbS9sb2FkZXJzL2JhYnlsb25qcy5sb2FkZXJzLm1p
bi5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImJhYnlsb25qcy5sb2FkZXJzLm1pbi5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiAKIDxib2R5PgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvd2Vi
a2l0Lm9yZy9kZW1vcy93ZWJncHUvYmFieWxvbi9vbmVTcGhlcmVXZWJHUFUuaHRtbCBiL1dlYnNp
dGVzL3dlYmtpdC5vcmcvZGVtb3Mvd2ViZ3B1L2JhYnlsb24vb25lU3BoZXJlV2ViR1BVLmh0bWwK
aW5kZXggNjBmMmUzZTcwMmMzYmViMGJhMzdkODNhNTg1NjMxMjE2MjdhOTY3OS4uN2E0MTFlZmZj
ZTk2MTQxMDA0MzhhYTllYTFjNWFiMjk4ZWMwZGU3YiAxMDA2NDQKLS0tIGEvV2Vic2l0ZXMvd2Vi
a2l0Lm9yZy9kZW1vcy93ZWJncHUvYmFieWxvbi9vbmVTcGhlcmVXZWJHUFUuaHRtbAorKysgYi9X
ZWJzaXRlcy93ZWJraXQub3JnL2RlbW9zL3dlYmdwdS9iYWJ5bG9uL29uZVNwaGVyZVdlYkdQVS5o
dG1sCkBAIC05Niw3ICs5Niw3IEBACiAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVl
cnkuY29tL3BlcC8wLjQuMi9wZXAubWluLmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3Jj
PSJiYWJ5bG9uV2ViR3B1Lm1heC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Imh0dHBz
Oi8vcHJldmlldy5iYWJ5bG9uanMuY29tL2xvYWRlcnMvYmFieWxvbmpzLmxvYWRlcnMubWluLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iYmFieWxvbmpzLmxvYWRlcnMubWluLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIAogPGJvZHk+CkBAIC0yMDYsOSArMjA2LDYgQEAKICAgICAgICAg
ICAgIHNjZW5lLnJlbmRlcigpOwogICAgICAgICAgICAgZGl2RnBzLmlubmVySFRNTCA9IGVuZ2lu
ZS5nZXRGcHMoKS50b0ZpeGVkKCkgKyAiIGZwcyI7CiAgICAgICAgIH0pOwotICAgICAgICBzZXRU
aW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgIGVuZ2luZS5zdG9wUmVuZGVyTG9vcCgpOwotICAg
ICAgICB9LCAyMDAwKTsKICAgICB9KSgpOwogICAgIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0t
Z2l0IGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kZW1vcy93ZWJncHUvYmFieWxvbi9vbmVTcGhlcmVX
ZWJHUFVXU0xTaGFkZXJzLmpzIGIvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kZW1vcy93ZWJncHUvYmFi
eWxvbi9vbmVTcGhlcmVXZWJHUFVXU0xTaGFkZXJzLmpzCmluZGV4IGJlOThlYmUwYmQ5MzI4Y2Q0
OGY5NGMyN2IwZTU2NTVkNjkwZDY2NmYuLmQ5Yjg2YTkyY2YzN2U4Yzk3OWRmNTZlMzQxN2NiYjZm
YmMzMDNiNDYgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvZGVtb3Mvd2ViZ3B1L2Jh
Ynlsb24vb25lU3BoZXJlV2ViR1BVV1NMU2hhZGVycy5qcworKysgYi9XZWJzaXRlcy93ZWJraXQu
b3JnL2RlbW9zL3dlYmdwdS9iYWJ5bG9uL29uZVNwaGVyZVdlYkdQVVdTTFNoYWRlcnMuanMKQEAg
LTExLDEyICsxMSw2IEBAIHN0cnVjdCBTY2VuZSB7CiAgICAgZmxvYXQ0eDQgdmlldzsKIH0KIAot
c3RydWN0IEJpbmRHcm91cEEgewotICAgIGNvbnN0YW50IFNjZW5lW10gc2NlbmUgOiByZWdpc3Rl
cihiMCwgc3BhY2UwKTsKLSAgICBUZXh0dXJlMkQ8ZmxvYXQ0PiBlbnZpcm9ubWVudEJyZGZTYW1w
bGVyVGV4dHVyZSA6IHJlZ2lzdGVyKHQxLCBzcGFjZTApOwotICAgIHNhbXBsZXIgZW52aXJvbm1l
bnRCcmRmU2FtcGxlclNhbXBsZXIgOiByZWdpc3RlcihzMiwgc3BhY2UwKTsKLX0KLQogc3RydWN0
IE1hdGVyaWFsIHsKICAgICBmbG9hdDIgdkFsYmVkb0luZm9zOwogICAgIGZsb2F0NCB2QW1iaWVu
dEluZm9zOwpAQCAtMTAwLDE2ICs5NCw2IEBAIHN0cnVjdCBNZXNoIHsKICAgICBmbG9hdCB2aXNp
YmlsaXR5OwogfQogCi1zdHJ1Y3QgQmluZEdyb3VwQiB7Ci0gICAgY29uc3RhbnQgTWF0ZXJpYWxb
XSBtYXRlcmlhbCA6IHJlZ2lzdGVyKGIwLCBzcGFjZTEpOwotICAgIGNvbnN0YW50IE1lc2hbXSBt
ZXNoIDogcmVnaXN0ZXIoYjEsIHNwYWNlMSk7Ci19Ci0KLXN0cnVjdCBCaW5kR3JvdXBDIHsKLSAg
ICBUZXh0dXJlMkQ8ZmxvYXQ0PiByZWZsZWN0aW9uU2FtcGxlclRleHR1cmUgOiByZWdpc3Rlcih0
MCwgc3BhY2UyKTsKLSAgICBzYW1wbGVyIHJlZmxlY3Rpb25TYW1wbGVyU2FtcGxlciA6IHJlZ2lz
dGVyKHMxLCBzcGFjZTIpOwotfQotCiBmbG9hdDN4MyB0cmFuc3Bvc2VNYXQzKGZsb2F0M3gzIGlu
TWF0cml4KSB7CiAgICAgZmxvYXQzIGkwID0gaW5NYXRyaXhbMF07CiAgICAgZmxvYXQzIGkxID0g
aW5NYXRyaXhbMV07CkBAIC0xOTIsMTIgKzE3NiwxOSBAQCBmbG9hdDMgY29tcHV0ZUVudmlyb25t
ZW50SXJyYWRpYW5jZShmbG9hdDMgbm9ybWFsLCBjb25zdGFudCBNYXRlcmlhbCogbWF0ZXJpYWwp
CiAgICAgICAgICsgbWF0ZXJpYWwtPnZTcGhlcmljYWxMMjIgKiAobm9ybWFsLnggKiBub3JtYWwu
eCAtIChub3JtYWwueSAqIG5vcm1hbC55KSk7CiB9CiAKLXZlcnRleCBPdXRwdXQgbWFpbihmbG9h
dDMgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyBub3JtYWwgOiBhdHRyaWJ1dGUoMSks
IEJpbmRHcm91cEEgYmluZEdyb3VwQSwgQmluZEdyb3VwQiBiaW5kR3JvdXBCLCBCaW5kR3JvdXBD
IGJpbmRHcm91cEMpIHsKK3ZlcnRleCBPdXRwdXQgbWFpbihmbG9hdDMgcG9zaXRpb24gOiBhdHRy
aWJ1dGUoMCksIGZsb2F0MyBub3JtYWwgOiBhdHRyaWJ1dGUoMSksCisgICAgICAgIGNvbnN0YW50
IFNjZW5lW10gc2NlbmUgOiByZWdpc3RlcihiMCwgc3BhY2UwKSwKKyAgICAgICAgVGV4dHVyZTJE
PGZsb2F0ND4gZW52aXJvbm1lbnRCcmRmU2FtcGxlclRleHR1cmUgOiByZWdpc3Rlcih0MSwgc3Bh
Y2UwKSwKKyAgICAgICAgc2FtcGxlciBlbnZpcm9ubWVudEJyZGZTYW1wbGVyU2FtcGxlciA6IHJl
Z2lzdGVyKHMyLCBzcGFjZTApLAorICAgICAgICBjb25zdGFudCBNYXRlcmlhbFtdIG1hdGVyaWFs
IDogcmVnaXN0ZXIoYjAsIHNwYWNlMSksCisgICAgICAgIGNvbnN0YW50IE1lc2hbXSBtZXNoIDog
cmVnaXN0ZXIoYjEsIHNwYWNlMSksCisgICAgICAgIFRleHR1cmUyRDxmbG9hdDQ+IHJlZmxlY3Rp
b25TYW1wbGVyVGV4dHVyZSA6IHJlZ2lzdGVyKHQwLCBzcGFjZTIpLAorICAgICAgICBzYW1wbGVy
IHJlZmxlY3Rpb25TYW1wbGVyU2FtcGxlciA6IHJlZ2lzdGVyKHMxLCBzcGFjZTIpKSB7CiAgICAg
T3V0cHV0IG91dHB1dDsKICAgICBmbG9hdDMgcG9zaXRpb25VcGRhdGVkID0gcG9zaXRpb247CiAg
ICAgZmxvYXQzIG5vcm1hbFVwZGF0ZWQgPSBub3JtYWw7Ci0gICAgZmxvYXQ0eDQgZmluYWxXb3Js
ZCA9IGJpbmRHcm91cEIubWVzaFswXS53b3JsZDsKLSAgICBvdXRwdXQucG9zaXRpb24gPSBtdWwo
bXVsKGJpbmRHcm91cEEuc2NlbmVbMF0udmlld1Byb2plY3Rpb24sIGZpbmFsV29ybGQpLCBmbG9h
dDQocG9zaXRpb25VcGRhdGVkLCAxLjApKTsKKyAgICBmbG9hdDR4NCBmaW5hbFdvcmxkID0gbWVz
aFswXS53b3JsZDsKKyAgICBvdXRwdXQucG9zaXRpb24gPSBtdWwobXVsKHNjZW5lWzBdLnZpZXdQ
cm9qZWN0aW9uLCBmaW5hbFdvcmxkKSwgZmxvYXQ0KHBvc2l0aW9uVXBkYXRlZCwgMS4wKSk7CiAg
ICAgZmxvYXQ0IHdvcmxkUG9zID0gbXVsKGZpbmFsV29ybGQsIGZsb2F0NChwb3NpdGlvblVwZGF0
ZWQsIDEuMCkpOwogICAgIG91dHB1dC52UG9zaXRpb25XID0gd29ybGRQb3MueHl6OwogICAgIGZs
b2F0M3gzIG5vcm1hbFdvcmxkOwpAQCAtMjA1LDggKzE5Niw4IEBAIHZlcnRleCBPdXRwdXQgbWFp
bihmbG9hdDMgcG9zaXRpb24gOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyBub3JtYWwgOiBhdHRyaWJ1
dGUoMSksCiAgICAgbm9ybWFsV29ybGRbMV0gPSBmaW5hbFdvcmxkWzFdLnh5ejsKICAgICBub3Jt
YWxXb3JsZFsyXSA9IGZpbmFsV29ybGRbMl0ueHl6OwogICAgIG91dHB1dC52Tm9ybWFsVyA9IG5v
cm1hbGl6ZShtdWwobm9ybWFsV29ybGQsIG5vcm1hbFVwZGF0ZWQpKTsKLSAgICBmbG9hdDMgcmVm
bGVjdGlvblZlY3RvciA9IG11bChiaW5kR3JvdXBCLm1hdGVyaWFsWzBdLnJlZmxlY3Rpb25NYXRy
aXgsIGZsb2F0NChvdXRwdXQudk5vcm1hbFcsIDApKS54eXo7Ci0gICAgb3V0cHV0LnZFbnZpcm9u
bWVudElycmFkaWFuY2UgPSBjb21wdXRlRW52aXJvbm1lbnRJcnJhZGlhbmNlKHJlZmxlY3Rpb25W
ZWN0b3IsICZiaW5kR3JvdXBCLm1hdGVyaWFsWzBdKTsKKyAgICBmbG9hdDMgcmVmbGVjdGlvblZl
Y3RvciA9IG11bChtYXRlcmlhbFswXS5yZWZsZWN0aW9uTWF0cml4LCBmbG9hdDQob3V0cHV0LnZO
b3JtYWxXLCAwKSkueHl6OworICAgIG91dHB1dC52RW52aXJvbm1lbnRJcnJhZGlhbmNlID0gY29t
cHV0ZUVudmlyb25tZW50SXJyYWRpYW5jZShyZWZsZWN0aW9uVmVjdG9yLCAmbWF0ZXJpYWxbMF0p
OwogICAgIGZsb2F0MiB1dlVwZGF0ZWQ7CiAgICAgZmxvYXQyIHV2MjsKICAgICAvL291dHB1dC5w
b3NpdGlvbiAqPSAtMS47CkBAIC0yMjAsMTIgKzIxMSw2IEBAIHN0cnVjdCBTY2VuZSB7CiAgICAg
ZmxvYXQ0eDQgdmlldzsKIH0KIAotc3RydWN0IEJpbmRHcm91cEEgewotICAgIGNvbnN0YW50IFNj
ZW5lW10gc2NlbmUgOiByZWdpc3RlcihiMCwgc3BhY2UwKTsKLSAgICBUZXh0dXJlMkQ8ZmxvYXQ0
PiBlbnZpcm9ubWVudEJyZGZTYW1wbGVyVGV4dHVyZSA6IHJlZ2lzdGVyKHQxLCBzcGFjZTApOwot
ICAgIHNhbXBsZXIgZW52aXJvbm1lbnRCcmRmU2FtcGxlclNhbXBsZXIgOiByZWdpc3RlcihzMiwg
c3BhY2UwKTsKLX0KLQogc3RydWN0IE1hdGVyaWFsIHsKICAgICBmbG9hdDIgdkFsYmVkb0luZm9z
OwogICAgIGZsb2F0NCB2QW1iaWVudEluZm9zOwpAQCAtMzA5LDE2ICsyOTQsNiBAQCBzdHJ1Y3Qg
TWVzaCB7CiAgICAgZmxvYXQgdmlzaWJpbGl0eTsKIH0KIAotc3RydWN0IEJpbmRHcm91cEIgewot
ICAgIGNvbnN0YW50IE1hdGVyaWFsW10gbWF0ZXJpYWwgOiByZWdpc3RlcihiMCwgc3BhY2UxKTsK
LSAgICBjb25zdGFudCBNZXNoW10gbWVzaCA6IHJlZ2lzdGVyKGIxLCBzcGFjZTEpOwotfQotCi1z
dHJ1Y3QgQmluZEdyb3VwQyB7Ci0gICAgVGV4dHVyZTJEPGZsb2F0ND4gcmVmbGVjdGlvblNhbXBs
ZXJUZXh0dXJlIDogcmVnaXN0ZXIodDAsIHNwYWNlMik7Ci0gICAgc2FtcGxlciByZWZsZWN0aW9u
U2FtcGxlclNhbXBsZXIgOiByZWdpc3RlcihzMSwgc3BhY2UyKTsKLX0KLQogZmxvYXQzeDMgdHJh
bnNwb3NlTWF0MyhmbG9hdDN4MyBpbk1hdHJpeCkgewogICAgIGZsb2F0MyBpMCA9IGluTWF0cml4
WzBdOwogICAgIGZsb2F0MyBpMSA9IGluTWF0cml4WzFdOwpAQCAtNjkxLDE1ICs2NjYsMjIgQEAg
ZmxvYXQzIGNvbXB1dGVSZWZsZWN0aW9uQ29vcmRzKGZsb2F0NCB3b3JsZFBvcywgZmxvYXQzIHdv
cmxkTm9ybWFsLCBmbG9hdDQgdkV5ZVAKICAgICByZXR1cm4gY29tcHV0ZUN1YmljQ29vcmRzKHdv
cmxkUG9zLCB3b3JsZE5vcm1hbCwgdkV5ZVBvc2l0aW9uLnh5eiwgcmVmbGVjdGlvbk1hdHJpeCk7
CiB9CiAKLWZyYWdtZW50IGZsb2F0NCBtYWluKGZsb2F0MyB2UG9zaXRpb25XIDogYXR0cmlidXRl
KDApLCBmbG9hdDMgdk5vcm1hbFcgOiBhdHRyaWJ1dGUoMSksIGZsb2F0MyB2RW52aXJvbm1lbnRJ
cnJhZGlhbmNlIDogYXR0cmlidXRlKDIpLCBCaW5kR3JvdXBBIGJpbmRHcm91cEEsIEJpbmRHcm91
cEIgYmluZEdyb3VwQiwgQmluZEdyb3VwQyBiaW5kR3JvdXBDKSA6IFNWX1RhcmdldCAwIHsKLSAg
ICBmbG9hdDMgdmlld0RpcmVjdGlvblcgPSBub3JtYWxpemUoYmluZEdyb3VwQi5tYXRlcmlhbFsw
XS52RXllUG9zaXRpb24ueHl6IC0gdlBvc2l0aW9uVyk7CitmcmFnbWVudCBmbG9hdDQgbWFpbihm
bG9hdDMgdlBvc2l0aW9uVyA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQzIHZOb3JtYWxXIDogYXR0cmli
dXRlKDEpLCBmbG9hdDMgdkVudmlyb25tZW50SXJyYWRpYW5jZSA6IGF0dHJpYnV0ZSgyKSwKKyAg
ICAgICAgY29uc3RhbnQgU2NlbmVbXSBzY2VuZSA6IHJlZ2lzdGVyKGIwLCBzcGFjZTApLAorICAg
ICAgICBUZXh0dXJlMkQ8ZmxvYXQ0PiBlbnZpcm9ubWVudEJyZGZTYW1wbGVyVGV4dHVyZSA6IHJl
Z2lzdGVyKHQxLCBzcGFjZTApLAorICAgICAgICBzYW1wbGVyIGVudmlyb25tZW50QnJkZlNhbXBs
ZXJTYW1wbGVyIDogcmVnaXN0ZXIoczIsIHNwYWNlMCksCisgICAgICAgIGNvbnN0YW50IE1hdGVy
aWFsW10gbWF0ZXJpYWwgOiByZWdpc3RlcihiMCwgc3BhY2UxKSwKKyAgICAgICAgY29uc3RhbnQg
TWVzaFtdIG1lc2ggOiByZWdpc3RlcihiMSwgc3BhY2UxKSwKKyAgICAgICAgVGV4dHVyZTJEPGZs
b2F0ND4gcmVmbGVjdGlvblNhbXBsZXJUZXh0dXJlIDogcmVnaXN0ZXIodDAsIHNwYWNlMiksCisg
ICAgICAgIHNhbXBsZXIgcmVmbGVjdGlvblNhbXBsZXJTYW1wbGVyIDogcmVnaXN0ZXIoczEsIHNw
YWNlMikpIDogU1ZfVGFyZ2V0IDAgeworICAgIGZsb2F0MyB2aWV3RGlyZWN0aW9uVyA9IG5vcm1h
bGl6ZShtYXRlcmlhbFswXS52RXllUG9zaXRpb24ueHl6IC0gdlBvc2l0aW9uVyk7CiAgICAgZmxv
YXQzIG5vcm1hbFcgPSBub3JtYWxpemUodk5vcm1hbFcpOwogICAgIGZsb2F0MiB1dk9mZnNldCA9
IGZsb2F0MigwLjAsIDAuMCk7Ci0gICAgZmxvYXQzIHN1cmZhY2VBbGJlZG8gPSBiaW5kR3JvdXBC
Lm1hdGVyaWFsWzBdLnZBbGJlZG9Db2xvci54eXo7Ci0gICAgZmxvYXQgYWxwaGEgPSBiaW5kR3Jv
dXBCLm1hdGVyaWFsWzBdLnZBbGJlZG9Db2xvci53OworICAgIGZsb2F0MyBzdXJmYWNlQWxiZWRv
ID0gbWF0ZXJpYWxbMF0udkFsYmVkb0NvbG9yLnh5ejsKKyAgICBmbG9hdCBhbHBoYSA9IG1hdGVy
aWFsWzBdLnZBbGJlZG9Db2xvci53OwogICAgIGZsb2F0MyBhbWJpZW50T2NjbHVzaW9uQ29sb3Ig
PSBmbG9hdDMoMS4sIDEuLCAxLik7Ci0gICAgZmxvYXQgbWljcm9TdXJmYWNlID0gYmluZEdyb3Vw
Qi5tYXRlcmlhbFswXS52UmVmbGVjdGl2aXR5Q29sb3IudzsKLSAgICBmbG9hdDMgc3VyZmFjZVJl
ZmxlY3Rpdml0eUNvbG9yID0gYmluZEdyb3VwQi5tYXRlcmlhbFswXS52UmVmbGVjdGl2aXR5Q29s
b3IueHl6OworICAgIGZsb2F0IG1pY3JvU3VyZmFjZSA9IG1hdGVyaWFsWzBdLnZSZWZsZWN0aXZp
dHlDb2xvci53OworICAgIGZsb2F0MyBzdXJmYWNlUmVmbGVjdGl2aXR5Q29sb3IgPSBtYXRlcmlh
bFswXS52UmVmbGVjdGl2aXR5Q29sb3IueHl6OwogICAgIGZsb2F0MiBtZXRhbGxpY1JvdWdobmVz
cyA9IHN1cmZhY2VSZWZsZWN0aXZpdHlDb2xvci54eTsKICAgICBtaWNyb1N1cmZhY2UgPSAxLjAg
LSBtZXRhbGxpY1JvdWdobmVzcy55OwogICAgIGZsb2F0MyBiYXNlQ29sb3IgPSBzdXJmYWNlQWxi
ZWRvOwpAQCAtNzE0LDIyICs2OTYsMjIgQEAgZnJhZ21lbnQgZmxvYXQ0IG1haW4oZmxvYXQzIHZQ
b3NpdGlvblcgOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyB2Tm9ybWFsVyA6IGF0dHJpYnUKICAgICBm
bG9hdDIgQUFSb3VnaG5lc3NGYWN0b3JzID0gZ2V0QUFSb3VnaG5lc3NGYWN0b3JzKG5vcm1hbFcp
OwogICAgIGZsb2F0NCBlbnZpcm9ubWVudFJhZGlhbmNlID0gZmxvYXQ0KDAuLCAwLiwgMC4sIDAu
KTsKICAgICBmbG9hdDMgZW52aXJvbm1lbnRJcnJhZGlhbmNlID0gZmxvYXQzKDAuLCAwLiwgMC4p
OwotICAgIGZsb2F0MyByZWZsZWN0aW9uVmVjdG9yID0gY29tcHV0ZVJlZmxlY3Rpb25Db29yZHMo
ZmxvYXQ0KHZQb3NpdGlvblcsIDEuMCksIG5vcm1hbFcsIGJpbmRHcm91cEIubWF0ZXJpYWxbMF0u
dkV5ZVBvc2l0aW9uLCBiaW5kR3JvdXBCLm1hdGVyaWFsWzBdLnJlZmxlY3Rpb25NYXRyaXgpOwor
ICAgIGZsb2F0MyByZWZsZWN0aW9uVmVjdG9yID0gY29tcHV0ZVJlZmxlY3Rpb25Db29yZHMoZmxv
YXQ0KHZQb3NpdGlvblcsIDEuMCksIG5vcm1hbFcsIG1hdGVyaWFsWzBdLnZFeWVQb3NpdGlvbiwg
bWF0ZXJpYWxbMF0ucmVmbGVjdGlvbk1hdHJpeCk7CiAgICAgZmxvYXQzIHJlZmxlY3Rpb25Db29y
ZHMgPSByZWZsZWN0aW9uVmVjdG9yOwotICAgIGZsb2F0IHJlZmxlY3Rpb25MT0QgPSBnZXRMb2RG
cm9tQWxwaGFHKGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udlJlZmxlY3Rpb25NaWNyb3N1cmZhY2VJ
bmZvcy54LCBhbHBoYUcpOwotICAgIHJlZmxlY3Rpb25MT0QgPSByZWZsZWN0aW9uTE9EICogYmlu
ZEdyb3VwQi5tYXRlcmlhbFswXS52UmVmbGVjdGlvbk1pY3Jvc3VyZmFjZUluZm9zLnkgKyBiaW5k
R3JvdXBCLm1hdGVyaWFsWzBdLnZSZWZsZWN0aW9uTWljcm9zdXJmYWNlSW5mb3MuejsKKyAgICBm
bG9hdCByZWZsZWN0aW9uTE9EID0gZ2V0TG9kRnJvbUFscGhhRyhtYXRlcmlhbFswXS52UmVmbGVj
dGlvbk1pY3Jvc3VyZmFjZUluZm9zLngsIGFscGhhRyk7CisgICAgcmVmbGVjdGlvbkxPRCA9IHJl
ZmxlY3Rpb25MT0QgKiBtYXRlcmlhbFswXS52UmVmbGVjdGlvbk1pY3Jvc3VyZmFjZUluZm9zLnkg
KyBtYXRlcmlhbFswXS52UmVmbGVjdGlvbk1pY3Jvc3VyZmFjZUluZm9zLno7CiAgICAgZmxvYXQg
cmVxdWVzdGVkUmVmbGVjdGlvbkxPRCA9IHJlZmxlY3Rpb25MT0Q7Ci0gICAgZW52aXJvbm1lbnRS
YWRpYW5jZSA9IFNhbXBsZShiaW5kR3JvdXBDLnJlZmxlY3Rpb25TYW1wbGVyVGV4dHVyZSwgYmlu
ZEdyb3VwQy5yZWZsZWN0aW9uU2FtcGxlclNhbXBsZXIsIHJlZmxlY3Rpb25Db29yZHMueHkpOyAv
L1NhbXBsZUxldmVsKGJpbmRHcm91cEMucmVmbGVjdGlvblNhbXBsZXJUZXh0dXJlLCBiaW5kR3Jv
dXBDLnJlZmxlY3Rpb25TYW1wbGVyU2FtcGxlciwgcmVmbGVjdGlvbkNvb3JkcywgcmVxdWVzdGVk
UmVmbGVjdGlvbkxPRCk7CisgICAgZW52aXJvbm1lbnRSYWRpYW5jZSA9IFNhbXBsZShyZWZsZWN0
aW9uU2FtcGxlclRleHR1cmUsIHJlZmxlY3Rpb25TYW1wbGVyU2FtcGxlciwgcmVmbGVjdGlvbkNv
b3Jkcy54eSk7IC8vU2FtcGxlTGV2ZWwocmVmbGVjdGlvblNhbXBsZXJUZXh0dXJlLCByZWZsZWN0
aW9uU2FtcGxlclNhbXBsZXIsIHJlZmxlY3Rpb25Db29yZHMsIHJlcXVlc3RlZFJlZmxlY3Rpb25M
T0QpOwogICAgIGVudmlyb25tZW50UmFkaWFuY2UueHl6ID0gZnJvbVJHQkQoZW52aXJvbm1lbnRS
YWRpYW5jZSk7CiAgICAgZW52aXJvbm1lbnRJcnJhZGlhbmNlID0gdkVudmlyb25tZW50SXJyYWRp
YW5jZTsKLSAgICBlbnZpcm9ubWVudFJhZGlhbmNlLnh5eiAqPSBiaW5kR3JvdXBCLm1hdGVyaWFs
WzBdLnZSZWZsZWN0aW9uSW5mb3MueDsKLSAgICBlbnZpcm9ubWVudFJhZGlhbmNlLnh5eiAqPSBi
aW5kR3JvdXBCLm1hdGVyaWFsWzBdLnZSZWZsZWN0aW9uQ29sb3IueHl6OwotICAgIGVudmlyb25t
ZW50SXJyYWRpYW5jZSAqPSBiaW5kR3JvdXBCLm1hdGVyaWFsWzBdLnZSZWZsZWN0aW9uQ29sb3Iu
eHl6OworICAgIGVudmlyb25tZW50UmFkaWFuY2UueHl6ICo9IG1hdGVyaWFsWzBdLnZSZWZsZWN0
aW9uSW5mb3MueDsKKyAgICBlbnZpcm9ubWVudFJhZGlhbmNlLnh5eiAqPSBtYXRlcmlhbFswXS52
UmVmbGVjdGlvbkNvbG9yLnh5ejsKKyAgICBlbnZpcm9ubWVudElycmFkaWFuY2UgKj0gbWF0ZXJp
YWxbMF0udlJlZmxlY3Rpb25Db2xvci54eXo7CiAgICAgZmxvYXQgcmVmbGVjdGFuY2UgPSBtYXgo
bWF4KHN1cmZhY2VSZWZsZWN0aXZpdHlDb2xvci54LCBzdXJmYWNlUmVmbGVjdGl2aXR5Q29sb3Iu
eSksIHN1cmZhY2VSZWZsZWN0aXZpdHlDb2xvci56KTsKICAgICBmbG9hdCByZWZsZWN0YW5jZTkw
ID0gZnJlc25lbEdyYXppbmdSZWZsZWN0YW5jZShyZWZsZWN0YW5jZSk7CiAgICAgZmxvYXQzIHNw
ZWN1bGFyRW52aXJvbm1lbnRSMCA9IHN1cmZhY2VSZWZsZWN0aXZpdHlDb2xvci54eXo7CiAgICAg
ZmxvYXQzIHNwZWN1bGFyRW52aXJvbm1lbnRSOTAgPSBmbG9hdDMoMS4wLCAxLjAsIDEuMCkgKiBy
ZWZsZWN0YW5jZTkwOwotICAgIGZsb2F0MyBlbnZpcm9ubWVudEJyZGYgPSBnZXRCUkRGTG9va3Vw
KE5kb3RWLCByb3VnaG5lc3MsIGJpbmRHcm91cEEuZW52aXJvbm1lbnRCcmRmU2FtcGxlclRleHR1
cmUsIGJpbmRHcm91cEEuZW52aXJvbm1lbnRCcmRmU2FtcGxlclNhbXBsZXIpOworICAgIGZsb2F0
MyBlbnZpcm9ubWVudEJyZGYgPSBnZXRCUkRGTG9va3VwKE5kb3RWLCByb3VnaG5lc3MsIGVudmly
b25tZW50QnJkZlNhbXBsZXJUZXh0dXJlLCBlbnZpcm9ubWVudEJyZGZTYW1wbGVyU2FtcGxlcik7
CiAgICAgZmxvYXQzIGVuZXJneUNvbnNlcnZhdGlvbkZhY3RvciA9IGdldEVuZXJneUNvbnNlcnZh
dGlvbkZhY3RvcihzcGVjdWxhckVudmlyb25tZW50UjAsIGVudmlyb25tZW50QnJkZik7CiAgICAg
ZmxvYXQzIGRpZmZ1c2VCYXNlID0gZmxvYXQzKDAuLCAwLiwgMC4pOwogICAgIFByZUxpZ2h0aW5n
SW5mbyBwcmVJbmZvOwpAQCAtNzQzLDI1ICs3MjUsMjUgQEAgZnJhZ21lbnQgZmxvYXQ0IG1haW4o
ZmxvYXQzIHZQb3NpdGlvblcgOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyB2Tm9ybWFsVyA6IGF0dHJp
YnUKICAgICBmaW5hbElycmFkaWFuY2UgKj0gc3VyZmFjZUFsYmVkby54eXo7CiAgICAgZmxvYXQz
IGZpbmFsUmFkaWFuY2UgPSBlbnZpcm9ubWVudFJhZGlhbmNlLnh5ejsKICAgICBmaW5hbFJhZGlh
bmNlICo9IHNwZWN1bGFyRW52aXJvbm1lbnRSZWZsZWN0YW5jZTsKLSAgICBmbG9hdDMgZmluYWxS
YWRpYW5jZVNjYWxlZCA9IGZpbmFsUmFkaWFuY2UgKiBiaW5kR3JvdXBCLm1hdGVyaWFsWzBdLnZM
aWdodGluZ0ludGVuc2l0eS56OworICAgIGZsb2F0MyBmaW5hbFJhZGlhbmNlU2NhbGVkID0gZmlu
YWxSYWRpYW5jZSAqIG1hdGVyaWFsWzBdLnZMaWdodGluZ0ludGVuc2l0eS56OwogICAgIGZpbmFs
UmFkaWFuY2VTY2FsZWQgKj0gZW5lcmd5Q29uc2VydmF0aW9uRmFjdG9yOwogICAgIGZsb2F0MyBm
aW5hbERpZmZ1c2UgPSBkaWZmdXNlQmFzZTsKICAgICBmaW5hbERpZmZ1c2UgKj0gc3VyZmFjZUFs
YmVkby54eXo7CiAgICAgZmluYWxEaWZmdXNlID0gbWF4KGZpbmFsRGlmZnVzZSwgZmxvYXQzKDAu
MCwgMC4wLCAwLjApKTsKLSAgICBmbG9hdDMgZmluYWxBbWJpZW50ID0gYmluZEdyb3VwQi5tYXRl
cmlhbFswXS52QW1iaWVudENvbG9yOworICAgIGZsb2F0MyBmaW5hbEFtYmllbnQgPSBtYXRlcmlh
bFswXS52QW1iaWVudENvbG9yOwogICAgIGZpbmFsQW1iaWVudCAqPSBzdXJmYWNlQWxiZWRvLnh5
ejsKLSAgICBmbG9hdDMgZmluYWxFbWlzc2l2ZSA9IGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkVt
aXNzaXZlQ29sb3I7CisgICAgZmxvYXQzIGZpbmFsRW1pc3NpdmUgPSBtYXRlcmlhbFswXS52RW1p
c3NpdmVDb2xvcjsKICAgICBmbG9hdDMgYW1iaWVudE9jY2x1c2lvbkZvckRpcmVjdERpZmZ1c2Ug
PSBhbWJpZW50T2NjbHVzaW9uQ29sb3I7CiAgICAgZmxvYXQ0IGZpbmFsQ29sb3IgPSBmbG9hdDQo
CiAgICAgICAgIGZpbmFsQW1iaWVudCAqIGFtYmllbnRPY2NsdXNpb25Db2xvciArCi0gICAgICAg
IGZpbmFsRGlmZnVzZSAqIGFtYmllbnRPY2NsdXNpb25Gb3JEaXJlY3REaWZmdXNlICogYmluZEdy
b3VwQi5tYXRlcmlhbFswXS52TGlnaHRpbmdJbnRlbnNpdHkueCArCi0gICAgICAgIGZpbmFsSXJy
YWRpYW5jZSAqIGFtYmllbnRPY2NsdXNpb25Db2xvciAqIGJpbmRHcm91cEIubWF0ZXJpYWxbMF0u
dkxpZ2h0aW5nSW50ZW5zaXR5LnogKworICAgICAgICBmaW5hbERpZmZ1c2UgKiBhbWJpZW50T2Nj
bHVzaW9uRm9yRGlyZWN0RGlmZnVzZSAqIG1hdGVyaWFsWzBdLnZMaWdodGluZ0ludGVuc2l0eS54
ICsKKyAgICAgICAgZmluYWxJcnJhZGlhbmNlICogYW1iaWVudE9jY2x1c2lvbkNvbG9yICogbWF0
ZXJpYWxbMF0udkxpZ2h0aW5nSW50ZW5zaXR5LnogKwogICAgICAgICBmaW5hbFJhZGlhbmNlU2Nh
bGVkICsKLSAgICAgICAgZmluYWxFbWlzc2l2ZSAqIGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkxp
Z2h0aW5nSW50ZW5zaXR5LnksCisgICAgICAgIGZpbmFsRW1pc3NpdmUgKiBtYXRlcmlhbFswXS52
TGlnaHRpbmdJbnRlbnNpdHkueSwKICAgICAgICAgYWxwaGEpOwogICAgIGZpbmFsQ29sb3IgPSBt
YXgoZmluYWxDb2xvciwgZmxvYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCkpOwogICAgIGZpbmFsQ29s
b3IgPSBhcHBseUltYWdlUHJvY2Vzc2luZyhmaW5hbENvbG9yKTsKLSAgICBmaW5hbENvbG9yLncg
Kj0gYmluZEdyb3VwQi5tZXNoWzBdLnZpc2liaWxpdHk7CisgICAgZmluYWxDb2xvci53ICo9IG1l
c2hbMF0udmlzaWJpbGl0eTsKICAgICByZXR1cm4gZmluYWxDb2xvcjsKIH0KIGA7CkBAIC03Nzks
MTIgKzc2MSw2IEBAIHN0cnVjdCBTY2VuZSB7CiAgICAgZmxvYXQ0eDQgdmlldzsKIH0KIAotc3Ry
dWN0IEJpbmRHcm91cEEgewotICAgIGNvbnN0YW50IFNjZW5lW10gc2NlbmUgOiByZWdpc3Rlcihi
MCwgc3BhY2UwKTsKLSAgICBUZXh0dXJlMkQ8ZmxvYXQ0PiBlbnZpcm9ubWVudEJyZGZTYW1wbGVy
VGV4dHVyZSA6IHJlZ2lzdGVyKHQxLCBzcGFjZTApOwotICAgIHNhbXBsZXIgZW52aXJvbm1lbnRC
cmRmU2FtcGxlclNhbXBsZXIgOiByZWdpc3RlcihzMiwgc3BhY2UwKTsKLX0KLQogc3RydWN0IE1h
dGVyaWFsIHsKICAgICBmbG9hdDIgdkFsYmVkb0luZm9zOwogICAgIGZsb2F0NCB2QW1iaWVudElu
Zm9zOwpAQCAtODY4LDE2ICs4NDQsNiBAQCBzdHJ1Y3QgTWVzaCB7CiAgICAgZmxvYXQgdmlzaWJp
bGl0eTsKIH0KIAotc3RydWN0IEJpbmRHcm91cEIgewotICAgIGNvbnN0YW50IE1hdGVyaWFsW10g
bWF0ZXJpYWwgOiByZWdpc3RlcihiMCwgc3BhY2UxKTsKLSAgICBjb25zdGFudCBNZXNoW10gbWVz
aCA6IHJlZ2lzdGVyKGIxLCBzcGFjZTEpOwotfQotCi1zdHJ1Y3QgQmluZEdyb3VwQyB7Ci0gICAg
VGV4dHVyZTJEPGZsb2F0ND4gcmVmbGVjdGlvblNhbXBsZXJUZXh0dXJlIDogcmVnaXN0ZXIodDAs
IHNwYWNlMik7Ci0gICAgc2FtcGxlciByZWZsZWN0aW9uU2FtcGxlclNhbXBsZXIgOiByZWdpc3Rl
cihzMSwgc3BhY2UyKTsKLX0KLQogZmxvYXQzeDMgdHJhbnNwb3NlTWF0MyhmbG9hdDN4MyBpbk1h
dHJpeCkgewogICAgIGZsb2F0MyBpMCA9IGluTWF0cml4WzBdOwogICAgIGZsb2F0MyBpMSA9IGlu
TWF0cml4WzFdOwpAQCAtOTQ4LDEzICs5MTQsMjAgQEAgZmxvYXQzIGZyb21SR0JEKGZsb2F0NCBy
Z2JkKSB7CiAgICAgcmV0dXJuIHJnYmQueHl6IC8gcmdiZC53OwogfQogCi12ZXJ0ZXggT3V0cHV0
IG1haW4oZmxvYXQzIHBvc2l0aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdDMgbm9ybWFsIDogYXR0
cmlidXRlKDEpLCBCaW5kR3JvdXBBIGJpbmRHcm91cEEsIEJpbmRHcm91cEIgYmluZEdyb3VwQiwg
QmluZEdyb3VwQyBiaW5kR3JvdXBDKSB7Cit2ZXJ0ZXggT3V0cHV0IG1haW4oZmxvYXQzIHBvc2l0
aW9uIDogYXR0cmlidXRlKDApLCBmbG9hdDMgbm9ybWFsIDogYXR0cmlidXRlKDEpLAorICAgICAg
ICBjb25zdGFudCBTY2VuZVtdIHNjZW5lIDogcmVnaXN0ZXIoYjAsIHNwYWNlMCksCisgICAgICAg
IFRleHR1cmUyRDxmbG9hdDQ+IGVudmlyb25tZW50QnJkZlNhbXBsZXJUZXh0dXJlIDogcmVnaXN0
ZXIodDEsIHNwYWNlMCksCisgICAgICAgIHNhbXBsZXIgZW52aXJvbm1lbnRCcmRmU2FtcGxlclNh
bXBsZXIgOiByZWdpc3RlcihzMiwgc3BhY2UwKSwKKyAgICAgICAgY29uc3RhbnQgTWF0ZXJpYWxb
XSBtYXRlcmlhbCA6IHJlZ2lzdGVyKGIwLCBzcGFjZTEpLAorICAgICAgICBjb25zdGFudCBNZXNo
W10gbWVzaCA6IHJlZ2lzdGVyKGIxLCBzcGFjZTEpLAorICAgICAgICBUZXh0dXJlMkQ8ZmxvYXQ0
PiByZWZsZWN0aW9uU2FtcGxlclRleHR1cmUgOiByZWdpc3Rlcih0MCwgc3BhY2UyKSwKKyAgICAg
ICAgc2FtcGxlciByZWZsZWN0aW9uU2FtcGxlclNhbXBsZXIgOiByZWdpc3RlcihzMSwgc3BhY2Uy
KSkgewogICAgIE91dHB1dCBvdXRwdXQ7CiAgICAgZmxvYXQzIHBvc2l0aW9uVXBkYXRlZCA9IHBv
c2l0aW9uOwogICAgIGZsb2F0MyBub3JtYWxVcGRhdGVkID0gbm9ybWFsOwogICAgIG91dHB1dC52
UG9zaXRpb25VVlcgPSBwb3NpdGlvblVwZGF0ZWQ7Ci0gICAgZmxvYXQ0eDQgZmluYWxXb3JsZCA9
IGJpbmRHcm91cEIubWVzaFswXS53b3JsZDsKLSAgICBvdXRwdXQucG9zaXRpb24gPSBtdWwobXVs
KGJpbmRHcm91cEEuc2NlbmVbMF0udmlld1Byb2plY3Rpb24sIGZpbmFsV29ybGQpLCBmbG9hdDQo
cG9zaXRpb25VcGRhdGVkLCAxLjApKTsKKyAgICBmbG9hdDR4NCBmaW5hbFdvcmxkID0gbWVzaFsw
XS53b3JsZDsKKyAgICBvdXRwdXQucG9zaXRpb24gPSBtdWwobXVsKHNjZW5lWzBdLnZpZXdQcm9q
ZWN0aW9uLCBmaW5hbFdvcmxkKSwgZmxvYXQ0KHBvc2l0aW9uVXBkYXRlZCwgMS4wKSk7CiAgICAg
ZmxvYXQ0IHdvcmxkUG9zID0gbXVsKGZpbmFsV29ybGQsIGZsb2F0NChwb3NpdGlvblVwZGF0ZWQs
IDEuMCkpOwogICAgIG91dHB1dC52UG9zaXRpb25XID0gd29ybGRQb3MueHl6OwogICAgIGZsb2F0
M3gzIG5vcm1hbFdvcmxkOwpAQCAtOTc1LDEyICs5NDgsNiBAQCBzdHJ1Y3QgU2NlbmUgewogICAg
IGZsb2F0NHg0IHZpZXc7CiB9CiAKLXN0cnVjdCBCaW5kR3JvdXBBIHsKLSAgICBjb25zdGFudCBT
Y2VuZVtdIHNjZW5lIDogcmVnaXN0ZXIoYjAsIHNwYWNlMCk7Ci0gICAgVGV4dHVyZTJEPGZsb2F0
ND4gZW52aXJvbm1lbnRCcmRmU2FtcGxlclRleHR1cmUgOiByZWdpc3Rlcih0MSwgc3BhY2UwKTsK
LSAgICBzYW1wbGVyIGVudmlyb25tZW50QnJkZlNhbXBsZXJTYW1wbGVyIDogcmVnaXN0ZXIoczIs
IHNwYWNlMCk7Ci19Ci0KIHN0cnVjdCBNYXRlcmlhbCB7CiAgICAgZmxvYXQyIHZBbGJlZG9JbmZv
czsKICAgICBmbG9hdDQgdkFtYmllbnRJbmZvczsKQEAgLTEwNjQsMTYgKzEwMzEsNiBAQCBzdHJ1
Y3QgTWVzaCB7CiAgICAgZmxvYXQgdmlzaWJpbGl0eTsKIH0KIAotc3RydWN0IEJpbmRHcm91cEIg
ewotICAgIGNvbnN0YW50IE1hdGVyaWFsW10gbWF0ZXJpYWwgOiByZWdpc3RlcihiMCwgc3BhY2Ux
KTsKLSAgICBjb25zdGFudCBNZXNoW10gbWVzaCA6IHJlZ2lzdGVyKGIxLCBzcGFjZTEpOwotfQot
Ci1zdHJ1Y3QgQmluZEdyb3VwQyB7Ci0gICAgVGV4dHVyZTJEPGZsb2F0ND4gcmVmbGVjdGlvblNh
bXBsZXJUZXh0dXJlIDogcmVnaXN0ZXIodDAsIHNwYWNlMik7Ci0gICAgc2FtcGxlciByZWZsZWN0
aW9uU2FtcGxlclNhbXBsZXIgOiByZWdpc3RlcihzMSwgc3BhY2UyKTsKLX0KLQogZmxvYXQzeDMg
dHJhbnNwb3NlTWF0MyhmbG9hdDN4MyBpbk1hdHJpeCkgewogICAgIGZsb2F0MyBpMCA9IGluTWF0
cml4WzBdOwogICAgIGZsb2F0MyBpMSA9IGluTWF0cml4WzFdOwpAQCAtMTQ0MiwxNiArMTM5OSwy
NCBAQCBmbG9hdDMgY29tcHV0ZVJlZmxlY3Rpb25Db29yZHMoZmxvYXQ0IHdvcmxkUG9zLCBmbG9h
dDMgd29ybGROb3JtYWwsIGZsb2F0MyB2UG9zaQogICAgIHJldHVybiBmbG9hdDMoZ2FtbWEgLyAz
LjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUgKyAwLjUsIHRoZXRhIC8gMy4xNDE1OTI2
NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1LCByKTsKIH0KIAotZnJhZ21lbnQgZmxvYXQ0IG1haW4o
ZmxvYXQzIHZQb3NpdGlvblcgOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyB2Tm9ybWFsVyA6IGF0dHJp
YnV0ZSgxKSwgZmxvYXQzIHZQb3NpdGlvblVWVyA6IGF0dHJpYnV0ZSgyKSwgQmluZEdyb3VwQSBi
aW5kR3JvdXBBLCBCaW5kR3JvdXBCIGJpbmRHcm91cEIsIEJpbmRHcm91cEMgYmluZEdyb3VwQywg
Ym9vbCBmcm9udEZhY2UgOiBTVl9Jc0Zyb250RmFjZSkgOiBTVl9UYXJnZXQgMCB7Ci0gICAgZmxv
YXQzIHZpZXdEaXJlY3Rpb25XID0gbm9ybWFsaXplKGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkV5
ZVBvc2l0aW9uLnh5eiAtIHZQb3NpdGlvblcpOworZnJhZ21lbnQgZmxvYXQ0IG1haW4oZmxvYXQz
IHZQb3NpdGlvblcgOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyB2Tm9ybWFsVyA6IGF0dHJpYnV0ZSgx
KSwgZmxvYXQzIHZQb3NpdGlvblVWVyA6IGF0dHJpYnV0ZSgyKSwKKyAgICAgICAgY29uc3RhbnQg
U2NlbmVbXSBzY2VuZSA6IHJlZ2lzdGVyKGIwLCBzcGFjZTApLAorICAgICAgICBUZXh0dXJlMkQ8
ZmxvYXQ0PiBlbnZpcm9ubWVudEJyZGZTYW1wbGVyVGV4dHVyZSA6IHJlZ2lzdGVyKHQxLCBzcGFj
ZTApLAorICAgICAgICBzYW1wbGVyIGVudmlyb25tZW50QnJkZlNhbXBsZXJTYW1wbGVyIDogcmVn
aXN0ZXIoczIsIHNwYWNlMCksCisgICAgICAgIGNvbnN0YW50IE1hdGVyaWFsW10gbWF0ZXJpYWwg
OiByZWdpc3RlcihiMCwgc3BhY2UxKSwKKyAgICAgICAgY29uc3RhbnQgTWVzaFtdIG1lc2ggOiBy
ZWdpc3RlcihiMSwgc3BhY2UxKSwKKyAgICAgICAgVGV4dHVyZTJEPGZsb2F0ND4gcmVmbGVjdGlv
blNhbXBsZXJUZXh0dXJlIDogcmVnaXN0ZXIodDAsIHNwYWNlMiksCisgICAgICAgIHNhbXBsZXIg
cmVmbGVjdGlvblNhbXBsZXJTYW1wbGVyIDogcmVnaXN0ZXIoczEsIHNwYWNlMiksCisgICAgICAg
IGJvb2wgZnJvbnRGYWNlIDogU1ZfSXNGcm9udEZhY2UpIDogU1ZfVGFyZ2V0IDAgeworICAgIGZs
b2F0MyB2aWV3RGlyZWN0aW9uVyA9IG5vcm1hbGl6ZShtYXRlcmlhbFswXS52RXllUG9zaXRpb24u
eHl6IC0gdlBvc2l0aW9uVyk7CiAgICAgZmxvYXQzIG5vcm1hbFcgPSBub3JtYWxpemUodk5vcm1h
bFcpOwogICAgIGZsb2F0MiB1dk9mZnNldCA9IGZsb2F0MigwLjAsIDAuMCk7CiAgICAgbm9ybWFs
VyA9IGZyb250RmFjZSA/IG5vcm1hbFcgOiAtbm9ybWFsVzsKLSAgICBmbG9hdDMgc3VyZmFjZUFs
YmVkbyA9IGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkFsYmVkb0NvbG9yLnh5ejsKLSAgICBmbG9h
dCBhbHBoYSA9IGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkFsYmVkb0NvbG9yLnc7CisgICAgZmxv
YXQzIHN1cmZhY2VBbGJlZG8gPSBtYXRlcmlhbFswXS52QWxiZWRvQ29sb3IueHl6OworICAgIGZs
b2F0IGFscGhhID0gbWF0ZXJpYWxbMF0udkFsYmVkb0NvbG9yLnc7CiAgICAgZmxvYXQzIGFtYmll
bnRPY2NsdXNpb25Db2xvciA9IGZsb2F0MygxLiwgMS4sIDEuKTsKLSAgICBmbG9hdCBtaWNyb1N1
cmZhY2UgPSBiaW5kR3JvdXBCLm1hdGVyaWFsWzBdLnZSZWZsZWN0aXZpdHlDb2xvci53OwotICAg
IGZsb2F0MyBzdXJmYWNlUmVmbGVjdGl2aXR5Q29sb3IgPSBiaW5kR3JvdXBCLm1hdGVyaWFsWzBd
LnZSZWZsZWN0aXZpdHlDb2xvci54eXo7CisgICAgZmxvYXQgbWljcm9TdXJmYWNlID0gbWF0ZXJp
YWxbMF0udlJlZmxlY3Rpdml0eUNvbG9yLnc7CisgICAgZmxvYXQzIHN1cmZhY2VSZWZsZWN0aXZp
dHlDb2xvciA9IG1hdGVyaWFsWzBdLnZSZWZsZWN0aXZpdHlDb2xvci54eXo7CiAgICAgbWljcm9T
dXJmYWNlID0gY2xhbXAobWljcm9TdXJmYWNlLCAwLjAsIDEuMCk7CiAgICAgZmxvYXQgcm91Z2hu
ZXNzID0gMS4gLSBtaWNyb1N1cmZhY2U7CiAgICAgZmxvYXQgTmRvdFZVbmNsYW1wZWQgPSBkb3Qo
bm9ybWFsVywgdmlld0RpcmVjdGlvblcpOwpAQCAtMTQ2MCwyMSArMTQyNSwyMSBAQCBmcmFnbWVu
dCBmbG9hdDQgbWFpbihmbG9hdDMgdlBvc2l0aW9uVyA6IGF0dHJpYnV0ZSgwKSwgZmxvYXQzIHZO
b3JtYWxXIDogYXR0cmlidQogICAgIGZsb2F0MiBBQVJvdWdobmVzc0ZhY3RvcnMgPSBnZXRBQVJv
dWdobmVzc0ZhY3RvcnMobm9ybWFsVyk7CiAgICAgZmxvYXQ0IGVudmlyb25tZW50UmFkaWFuY2Ug
PSBmbG9hdDQoMC4sIDAuLCAwLiwgMC4pOwogICAgIGZsb2F0MyBlbnZpcm9ubWVudElycmFkaWFu
Y2UgPSBmbG9hdDMoMC4sIDAuLCAwLik7Ci0gICAgZmxvYXQzIHJlZmxlY3Rpb25WZWN0b3IgPSBj
b21wdXRlUmVmbGVjdGlvbkNvb3JkcyhmbG9hdDQodlBvc2l0aW9uVywgMS4wKSwgbm9ybWFsVywg
dlBvc2l0aW9uVVZXLCBiaW5kR3JvdXBCLm1hdGVyaWFsWzBdLnJlZmxlY3Rpb25NYXRyaXgpOwor
ICAgIGZsb2F0MyByZWZsZWN0aW9uVmVjdG9yID0gY29tcHV0ZVJlZmxlY3Rpb25Db29yZHMoZmxv
YXQ0KHZQb3NpdGlvblcsIDEuMCksIG5vcm1hbFcsIHZQb3NpdGlvblVWVywgbWF0ZXJpYWxbMF0u
cmVmbGVjdGlvbk1hdHJpeCk7CiAgICAgZmxvYXQzIHJlZmxlY3Rpb25Db29yZHMgPSByZWZsZWN0
aW9uVmVjdG9yOwotICAgIGZsb2F0IHJlZmxlY3Rpb25MT0QgPSBnZXRMb2RGcm9tQWxwaGFHKGJp
bmRHcm91cEIubWF0ZXJpYWxbMF0udlJlZmxlY3Rpb25NaWNyb3N1cmZhY2VJbmZvcy54LCBhbHBo
YUcpOwotICAgIHJlZmxlY3Rpb25MT0QgPSByZWZsZWN0aW9uTE9EICogYmluZEdyb3VwQi5tYXRl
cmlhbFswXS52UmVmbGVjdGlvbk1pY3Jvc3VyZmFjZUluZm9zLnkgKyBiaW5kR3JvdXBCLm1hdGVy
aWFsWzBdLnZSZWZsZWN0aW9uTWljcm9zdXJmYWNlSW5mb3MuejsKKyAgICBmbG9hdCByZWZsZWN0
aW9uTE9EID0gZ2V0TG9kRnJvbUFscGhhRyhtYXRlcmlhbFswXS52UmVmbGVjdGlvbk1pY3Jvc3Vy
ZmFjZUluZm9zLngsIGFscGhhRyk7CisgICAgcmVmbGVjdGlvbkxPRCA9IHJlZmxlY3Rpb25MT0Qg
KiBtYXRlcmlhbFswXS52UmVmbGVjdGlvbk1pY3Jvc3VyZmFjZUluZm9zLnkgKyBtYXRlcmlhbFsw
XS52UmVmbGVjdGlvbk1pY3Jvc3VyZmFjZUluZm9zLno7CiAgICAgZmxvYXQgcmVxdWVzdGVkUmVm
bGVjdGlvbkxPRCA9IHJlZmxlY3Rpb25MT0Q7Ci0gICAgZW52aXJvbm1lbnRSYWRpYW5jZSA9IFNh
bXBsZShiaW5kR3JvdXBDLnJlZmxlY3Rpb25TYW1wbGVyVGV4dHVyZSwgYmluZEdyb3VwQy5yZWZs
ZWN0aW9uU2FtcGxlclNhbXBsZXIsIHJlZmxlY3Rpb25Db29yZHMueHkpOyAvL1NhbXBsZUxldmVs
KGJpbmRHcm91cEMucmVmbGVjdGlvblNhbXBsZXJUZXh0dXJlLCBiaW5kR3JvdXBDLnJlZmxlY3Rp
b25TYW1wbGVyU2FtcGxlciwgcmVmbGVjdGlvbkNvb3JkcywgcmVxdWVzdGVkUmVmbGVjdGlvbkxP
RCk7CisgICAgZW52aXJvbm1lbnRSYWRpYW5jZSA9IFNhbXBsZShyZWZsZWN0aW9uU2FtcGxlclRl
eHR1cmUsIHJlZmxlY3Rpb25TYW1wbGVyU2FtcGxlciwgcmVmbGVjdGlvbkNvb3Jkcy54eSk7IC8v
U2FtcGxlTGV2ZWwocmVmbGVjdGlvblNhbXBsZXJUZXh0dXJlLCByZWZsZWN0aW9uU2FtcGxlclNh
bXBsZXIsIHJlZmxlY3Rpb25Db29yZHMsIHJlcXVlc3RlZFJlZmxlY3Rpb25MT0QpOwogICAgIGVu
dmlyb25tZW50UmFkaWFuY2UueHl6ID0gZnJvbVJHQkQoZW52aXJvbm1lbnRSYWRpYW5jZSk7Ci0g
ICAgZW52aXJvbm1lbnRSYWRpYW5jZS54eXogKj0gYmluZEdyb3VwQi5tYXRlcmlhbFswXS52UmVm
bGVjdGlvbkluZm9zLng7Ci0gICAgZW52aXJvbm1lbnRSYWRpYW5jZS54eXogKj0gYmluZEdyb3Vw
Qi5tYXRlcmlhbFswXS52UmVmbGVjdGlvbkNvbG9yLnh5ejsKLSAgICBlbnZpcm9ubWVudElycmFk
aWFuY2UgKj0gYmluZEdyb3VwQi5tYXRlcmlhbFswXS52UmVmbGVjdGlvbkNvbG9yLnh5ejsKKyAg
ICBlbnZpcm9ubWVudFJhZGlhbmNlLnh5eiAqPSBtYXRlcmlhbFswXS52UmVmbGVjdGlvbkluZm9z
Lng7CisgICAgZW52aXJvbm1lbnRSYWRpYW5jZS54eXogKj0gbWF0ZXJpYWxbMF0udlJlZmxlY3Rp
b25Db2xvci54eXo7CisgICAgZW52aXJvbm1lbnRJcnJhZGlhbmNlICo9IG1hdGVyaWFsWzBdLnZS
ZWZsZWN0aW9uQ29sb3IueHl6OwogICAgIGZsb2F0IHJlZmxlY3RhbmNlID0gbWF4KG1heChzdXJm
YWNlUmVmbGVjdGl2aXR5Q29sb3IueCwgc3VyZmFjZVJlZmxlY3Rpdml0eUNvbG9yLnkpLCBzdXJm
YWNlUmVmbGVjdGl2aXR5Q29sb3Iueik7CiAgICAgZmxvYXQgcmVmbGVjdGFuY2U5MCA9IGZyZXNu
ZWxHcmF6aW5nUmVmbGVjdGFuY2UocmVmbGVjdGFuY2UpOwogICAgIGZsb2F0MyBzcGVjdWxhckVu
dmlyb25tZW50UjAgPSBzdXJmYWNlUmVmbGVjdGl2aXR5Q29sb3IueHl6OwogICAgIGZsb2F0MyBz
cGVjdWxhckVudmlyb25tZW50UjkwID0gZmxvYXQzKDEuMCwgMS4wLCAxLjApICogcmVmbGVjdGFu
Y2U5MDsKLSAgICBmbG9hdDMgZW52aXJvbm1lbnRCcmRmID0gZ2V0QlJERkxvb2t1cChOZG90Viwg
cm91Z2huZXNzLCBiaW5kR3JvdXBBLmVudmlyb25tZW50QnJkZlNhbXBsZXJUZXh0dXJlLCBiaW5k
R3JvdXBBLmVudmlyb25tZW50QnJkZlNhbXBsZXJTYW1wbGVyKTsKKyAgICBmbG9hdDMgZW52aXJv
bm1lbnRCcmRmID0gZ2V0QlJERkxvb2t1cChOZG90Viwgcm91Z2huZXNzLCBlbnZpcm9ubWVudEJy
ZGZTYW1wbGVyVGV4dHVyZSwgZW52aXJvbm1lbnRCcmRmU2FtcGxlclNhbXBsZXIpOwogICAgIGZs
b2F0MyBlbmVyZ3lDb25zZXJ2YXRpb25GYWN0b3IgPSBnZXRFbmVyZ3lDb25zZXJ2YXRpb25GYWN0
b3Ioc3BlY3VsYXJFbnZpcm9ubWVudFIwLCBlbnZpcm9ubWVudEJyZGYpOwogICAgIGZsb2F0MyBk
aWZmdXNlQmFzZSA9IGZsb2F0MygwLiwgMC4sIDAuKTsKICAgICBQcmVMaWdodGluZ0luZm8gcHJl
SW5mbzsKQEAgLTE0ODYsMjUgKzE0NTEsMjUgQEAgZnJhZ21lbnQgZmxvYXQ0IG1haW4oZmxvYXQz
IHZQb3NpdGlvblcgOiBhdHRyaWJ1dGUoMCksIGZsb2F0MyB2Tm9ybWFsVyA6IGF0dHJpYnUKICAg
ICBmaW5hbElycmFkaWFuY2UgKj0gc3VyZmFjZUFsYmVkby54eXo7CiAgICAgZmxvYXQzIGZpbmFs
UmFkaWFuY2UgPSBlbnZpcm9ubWVudFJhZGlhbmNlLnh5ejsKICAgICBmaW5hbFJhZGlhbmNlICo9
IHNwZWN1bGFyRW52aXJvbm1lbnRSZWZsZWN0YW5jZTsKLSAgICBmbG9hdDMgZmluYWxSYWRpYW5j
ZVNjYWxlZCA9IGZpbmFsUmFkaWFuY2UgKiBiaW5kR3JvdXBCLm1hdGVyaWFsWzBdLnZMaWdodGlu
Z0ludGVuc2l0eS56OworICAgIGZsb2F0MyBmaW5hbFJhZGlhbmNlU2NhbGVkID0gZmluYWxSYWRp
YW5jZSAqIG1hdGVyaWFsWzBdLnZMaWdodGluZ0ludGVuc2l0eS56OwogICAgIGZpbmFsUmFkaWFu
Y2VTY2FsZWQgKj0gZW5lcmd5Q29uc2VydmF0aW9uRmFjdG9yOwogICAgIGZsb2F0MyBmaW5hbERp
ZmZ1c2UgPSBkaWZmdXNlQmFzZTsKICAgICBmaW5hbERpZmZ1c2UgKj0gc3VyZmFjZUFsYmVkby54
eXo7CiAgICAgZmluYWxEaWZmdXNlID0gbWF4KGZpbmFsRGlmZnVzZSwgZmxvYXQzKDAuMCwgMC4w
LCAwLjApKTsKLSAgICBmbG9hdDMgZmluYWxBbWJpZW50ID0gYmluZEdyb3VwQi5tYXRlcmlhbFsw
XS52QW1iaWVudENvbG9yOworICAgIGZsb2F0MyBmaW5hbEFtYmllbnQgPSBtYXRlcmlhbFswXS52
QW1iaWVudENvbG9yOwogICAgIGZpbmFsQW1iaWVudCAqPSBzdXJmYWNlQWxiZWRvLnh5ejsKLSAg
ICBmbG9hdDMgZmluYWxFbWlzc2l2ZSA9IGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkVtaXNzaXZl
Q29sb3I7CisgICAgZmxvYXQzIGZpbmFsRW1pc3NpdmUgPSBtYXRlcmlhbFswXS52RW1pc3NpdmVD
b2xvcjsKICAgICBmbG9hdDMgYW1iaWVudE9jY2x1c2lvbkZvckRpcmVjdERpZmZ1c2UgPSBhbWJp
ZW50T2NjbHVzaW9uQ29sb3I7CiAgICAgZmxvYXQ0IGZpbmFsQ29sb3IgPSBmbG9hdDQoCiAgICAg
ICAgIGZpbmFsQW1iaWVudCAqIGFtYmllbnRPY2NsdXNpb25Db2xvciArCi0gICAgICAgIGZpbmFs
RGlmZnVzZSAqIGFtYmllbnRPY2NsdXNpb25Gb3JEaXJlY3REaWZmdXNlICogYmluZEdyb3VwQi5t
YXRlcmlhbFswXS52TGlnaHRpbmdJbnRlbnNpdHkueCArCi0gICAgICAgIGZpbmFsSXJyYWRpYW5j
ZSAqIGFtYmllbnRPY2NsdXNpb25Db2xvciAqIGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkxpZ2h0
aW5nSW50ZW5zaXR5LnogKworICAgICAgICBmaW5hbERpZmZ1c2UgKiBhbWJpZW50T2NjbHVzaW9u
Rm9yRGlyZWN0RGlmZnVzZSAqIG1hdGVyaWFsWzBdLnZMaWdodGluZ0ludGVuc2l0eS54ICsKKyAg
ICAgICAgZmluYWxJcnJhZGlhbmNlICogYW1iaWVudE9jY2x1c2lvbkNvbG9yICogbWF0ZXJpYWxb
MF0udkxpZ2h0aW5nSW50ZW5zaXR5LnogKwogICAgICAgICBmaW5hbFJhZGlhbmNlU2NhbGVkICsK
LSAgICAgICAgZmluYWxFbWlzc2l2ZSAqIGJpbmRHcm91cEIubWF0ZXJpYWxbMF0udkxpZ2h0aW5n
SW50ZW5zaXR5LnksCisgICAgICAgIGZpbmFsRW1pc3NpdmUgKiBtYXRlcmlhbFswXS52TGlnaHRp
bmdJbnRlbnNpdHkueSwKICAgICAgICAgYWxwaGEpOwogICAgIGZpbmFsQ29sb3IgPSBtYXgoZmlu
YWxDb2xvciwgZmxvYXQ0KDAuMCwgMC4wLCAwLjAsIDAuMCkpOwogICAgIGZpbmFsQ29sb3IgPSBh
cHBseUltYWdlUHJvY2Vzc2luZyhmaW5hbENvbG9yKTsKLSAgICBmaW5hbENvbG9yLncgKj0gYmlu
ZEdyb3VwQi5tZXNoWzBdLnZpc2liaWxpdHk7CisgICAgZmluYWxDb2xvci53ICo9IG1lc2hbMF0u
dmlzaWJpbGl0eTsKICAgICByZXR1cm4gZmluYWxDb2xvcjsKIH0KIGA7CmRpZmYgLS1naXQgYS9X
ZWJzaXRlcy93ZWJraXQub3JnL2RlbW9zL3dlYmdwdS9iYWJ5bG9uL3ZlcnRleFNoYWRlckdMU0wx
Lmdsc2wgYi9XZWJzaXRlcy93ZWJraXQub3JnL2RlbW9zL3dlYmdwdS9iYWJ5bG9uL3ZlcnRleFNo
YWRlckdMU0wxLmdsc2wKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NDRhNjgyMWM0
OTQ5OTA3YjJlMDZiOWE5ZDE3OGVkZWExZmY0MDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vic2l0ZXMvd2Via2l0Lm9yZy9kZW1vcy93ZWJncHUvYmFi
eWxvbi92ZXJ0ZXhTaGFkZXJHTFNMMS5nbHNsCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAg
QEAKLSN2ZXJzaW9uIDQ1MAotCi1wcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0KLWxheW91dChzdGQx
NDAsY29sdW1uX21ham9yKSB1bmlmb3JtOwotCi1sYXlvdXQoc2V0ID0gMCwgYmluZGluZyA9IDAp
IHVuaWZvcm0gU2NlbmUgewotICAgIG1hdDQgdmlld1Byb2plY3Rpb247Ci0gICAgbWF0NCB2aWV3
OwotfTsKLQotbGF5b3V0KHNldCA9IDEsIGJpbmRpbmcgPSAwKSB1bmlmb3JtIE1hdGVyaWFsIHsK
LSAgICB2ZWMyIHZBbGJlZG9JbmZvczsKLSAgICB2ZWM0IHZBbWJpZW50SW5mb3M7Ci0gICAgdmVj
MiB2T3BhY2l0eUluZm9zOwotICAgIHZlYzIgdkVtaXNzaXZlSW5mb3M7Ci0gICAgdmVjMiB2TGln
aHRtYXBJbmZvczsKLSAgICB2ZWMzIHZSZWZsZWN0aXZpdHlJbmZvczsKLSAgICB2ZWMyIHZNaWNy
b1N1cmZhY2VTYW1wbGVySW5mb3M7Ci0gICAgdmVjMiB2UmVmbGVjdGlvbkluZm9zOwotICAgIHZl
YzMgdlJlZmxlY3Rpb25Qb3NpdGlvbjsKLSAgICB2ZWMzIHZSZWZsZWN0aW9uU2l6ZTsKLSAgICB2
ZWMzIHZCdW1wSW5mb3M7Ci0gICAgbWF0NCBhbGJlZG9NYXRyaXg7Ci0gICAgbWF0NCBhbWJpZW50
TWF0cml4OwotICAgIG1hdDQgb3BhY2l0eU1hdHJpeDsKLSAgICBtYXQ0IGVtaXNzaXZlTWF0cml4
OwotICAgIG1hdDQgbGlnaHRtYXBNYXRyaXg7Ci0gICAgbWF0NCByZWZsZWN0aXZpdHlNYXRyaXg7
Ci0gICAgbWF0NCBtaWNyb1N1cmZhY2VTYW1wbGVyTWF0cml4OwotICAgIG1hdDQgYnVtcE1hdHJp
eDsKLSAgICB2ZWMyIHZUYW5nZW50U3BhY2VQYXJhbXM7Ci0gICAgbWF0NCByZWZsZWN0aW9uTWF0
cml4OwotICAgIHZlYzMgdlJlZmxlY3Rpb25Db2xvcjsKLSAgICB2ZWM0IHZBbGJlZG9Db2xvcjsK
LSAgICB2ZWM0IHZMaWdodGluZ0ludGVuc2l0eTsKLSAgICB2ZWMzIHZSZWZsZWN0aW9uTWljcm9z
dXJmYWNlSW5mb3M7Ci0gICAgZmxvYXQgcG9pbnRTaXplOwotICAgIHZlYzQgdlJlZmxlY3Rpdml0
eUNvbG9yOwotICAgIHZlYzMgdkVtaXNzaXZlQ29sb3I7Ci0gICAgdmVjNCB2RXllUG9zaXRpb247
Ci0gICAgdmVjMyB2QW1iaWVudENvbG9yOwotICAgIHZlYzIgdkRlYnVnTW9kZTsKLSAgICB2ZWMy
IHZDbGVhckNvYXRQYXJhbXM7Ci0gICAgdmVjNCB2Q2xlYXJDb2F0UmVmcmFjdGlvblBhcmFtczsK
LSAgICB2ZWMyIHZDbGVhckNvYXRJbmZvczsKLSAgICBtYXQ0IGNsZWFyQ29hdE1hdHJpeDsKLSAg
ICB2ZWMyIHZDbGVhckNvYXRCdW1wSW5mb3M7Ci0gICAgdmVjMiB2Q2xlYXJDb2F0VGFuZ2VudFNw
YWNlUGFyYW1zOwotICAgIG1hdDQgY2xlYXJDb2F0QnVtcE1hdHJpeDsKLSAgICB2ZWM0IHZDbGVh
ckNvYXRUaW50UGFyYW1zOwotICAgIGZsb2F0IGNsZWFyQ29hdENvbG9yQXREaXN0YW5jZTsKLSAg
ICB2ZWMyIHZDbGVhckNvYXRUaW50SW5mb3M7Ci0gICAgbWF0NCBjbGVhckNvYXRUaW50TWF0cml4
OwotICAgIHZlYzMgdkFuaXNvdHJvcHk7Ci0gICAgdmVjMiB2QW5pc290cm9weUluZm9zOwotICAg
IG1hdDQgYW5pc290cm9weU1hdHJpeDsKLSAgICB2ZWM0IHZTaGVlbkNvbG9yOwotICAgIHZlYzIg
dlNoZWVuSW5mb3M7Ci0gICAgbWF0NCBzaGVlbk1hdHJpeDsKLSAgICB2ZWMzIHZSZWZyYWN0aW9u
TWljcm9zdXJmYWNlSW5mb3M7Ci0gICAgdmVjNCB2UmVmcmFjdGlvbkluZm9zOwotICAgIG1hdDQg
cmVmcmFjdGlvbk1hdHJpeDsKLSAgICB2ZWMyIHZUaGlja25lc3NJbmZvczsKLSAgICBtYXQ0IHRo
aWNrbmVzc01hdHJpeDsKLSAgICB2ZWMyIHZUaGlja25lc3NQYXJhbTsKLSAgICB2ZWMzIHZEaWZm
dXNpb25EaXN0YW5jZTsKLSAgICB2ZWM0IHZUaW50Q29sb3I7Ci0gICAgdmVjMyB2U3ViU3VyZmFj
ZUludGVuc2l0eTsKLSAgICB2ZWMzIHZTcGhlcmljYWxMMDA7Ci0gICAgdmVjMyB2U3BoZXJpY2Fs
TDFfMTsKLSAgICB2ZWMzIHZTcGhlcmljYWxMMTA7Ci0gICAgdmVjMyB2U3BoZXJpY2FsTDExOwot
ICAgIHZlYzMgdlNwaGVyaWNhbEwyXzI7Ci0gICAgdmVjMyB2U3BoZXJpY2FsTDJfMTsKLSAgICB2
ZWMzIHZTcGhlcmljYWxMMjA7Ci0gICAgdmVjMyB2U3BoZXJpY2FsTDIxOwotICAgIHZlYzMgdlNw
aGVyaWNhbEwyMjsKLSAgICB2ZWMzIHZTcGhlcmljYWxYOwotICAgIHZlYzMgdlNwaGVyaWNhbFk7
Ci0gICAgdmVjMyB2U3BoZXJpY2FsWjsKLSAgICB2ZWMzIHZTcGhlcmljYWxYWF9aWjsKLSAgICB2
ZWMzIHZTcGhlcmljYWxZWV9aWjsKLSAgICB2ZWMzIHZTcGhlcmljYWxaWjsKLSAgICB2ZWMzIHZT
cGhlcmljYWxYWTsKLSAgICB2ZWMzIHZTcGhlcmljYWxZWjsKLSAgICB2ZWMzIHZTcGhlcmljYWxa
WDsKLX07Ci0KLWxheW91dChzZXQgPSAxLCBiaW5kaW5nID0gMSkgdW5pZm9ybSBNZXNoIHsKLSAg
ICBtYXQ0IHdvcmxkOwotICAgIGZsb2F0IHZpc2liaWxpdHk7Ci19OwotCi1sYXlvdXQobG9jYXRp
b24gPSAwKSBpbiB2ZWMzIHBvc2l0aW9uOwotbGF5b3V0KGxvY2F0aW9uID0gMSkgaW4gdmVjMyBu
b3JtYWw7Ci0KLW1hdDMgdHJhbnNwb3NlTWF0MyhtYXQzIGluTWF0cml4KSB7Ci0gICAgdmVjMyBp
MCA9IGluTWF0cml4WzBdOwotICAgIHZlYzMgaTEgPSBpbk1hdHJpeFsxXTsKLSAgICB2ZWMzIGky
ID0gaW5NYXRyaXhbMl07Ci0gICAgbWF0MyBvdXRNYXRyaXggPSBtYXQzKAotICAgICAgICB2ZWMz
KGkwLngsIGkxLngsIGkyLngpLAotICAgICAgICB2ZWMzKGkwLnksIGkxLnksIGkyLnkpLAotICAg
ICAgICB2ZWMzKGkwLnosIGkxLnosIGkyLnopCi0gICAgKTsKLSAgICByZXR1cm4gb3V0TWF0cml4
OwotfQotCi1tYXQzIGludmVyc2VNYXQzKG1hdDMgaW5NYXRyaXgpIHsKLSAgICBmbG9hdCBhMDAg
PSBpbk1hdHJpeFswXVswXSwgYTAxID0gaW5NYXRyaXhbMF1bMV0sIGEwMiA9IGluTWF0cml4WzBd
WzJdOwotICAgIGZsb2F0IGExMCA9IGluTWF0cml4WzFdWzBdLCBhMTEgPSBpbk1hdHJpeFsxXVsx
XSwgYTEyID0gaW5NYXRyaXhbMV1bMl07Ci0gICAgZmxvYXQgYTIwID0gaW5NYXRyaXhbMl1bMF0s
IGEyMSA9IGluTWF0cml4WzJdWzFdLCBhMjIgPSBpbk1hdHJpeFsyXVsyXTsKLSAgICBmbG9hdCBi
MDEgPSBhMjIgKiBhMTEgLSBhMTIgKiBhMjE7Ci0gICAgZmxvYXQgYjExID0gLWEyMiAqIGExMCAr
IGExMiAqIGEyMDsKLSAgICBmbG9hdCBiMjEgPSBhMjEgKiBhMTAgLSBhMTEgKiBhMjA7Ci0gICAg
ZmxvYXQgZGV0ID0gYTAwICogYjAxICsgYTAxICogYjExICsgYTAyICogYjIxOwotICAgIHJldHVy
biBtYXQzKGIwMSwgLWEyMiAqIGEwMSArIGEwMiAqIGEyMSwgYTEyICogYTAxIC0gYTAyICogYTEx
LAotICAgICAgICBiMTEsIGEyMiAqIGEwMCAtIGEwMiAqIGEyMCwgLWExMiAqIGEwMCArIGEwMiAq
IGExMCwKLSAgICAgICAgYjIxLCAtYTIxICogYTAwICsgYTAxICogYTIwLCBhMTEgKiBhMDAgLSBh
MDEgKiBhMTApIC8gZGV0OwotfQotCi12ZWMzIHRvTGluZWFyU3BhY2UodmVjMyBjb2xvcikgewot
ICAgIHJldHVybiBwb3coY29sb3IsIHZlYzMoMi4yKSk7Ci19Ci0KLXZlYzMgdG9HYW1tYVNwYWNl
KHZlYzMgY29sb3IpIHsKLSAgICByZXR1cm4gcG93KGNvbG9yLCB2ZWMzKDEuMCAvIDIuMikpOwot
fQotCi1mbG9hdCBzcXVhcmUoZmxvYXQgdmFsdWUpIHsKLSAgICByZXR1cm4gdmFsdWUgKiB2YWx1
ZTsKLX0KLQotZmxvYXQgcG93NShmbG9hdCB2YWx1ZSkgewotICAgIGZsb2F0IHNxID0gdmFsdWUg
KiB2YWx1ZTsKLSAgICByZXR1cm4gc3EgKiBzcSAqIHZhbHVlOwotfQotCi1mbG9hdCBnZXRMdW1p
bmFuY2UodmVjMyBjb2xvcikgewotICAgIHJldHVybiBjbGFtcChkb3QoY29sb3IsIHZlYzMoMC4y
MTI2LCAwLjcxNTIsIDAuMDcyMikpLCAwLiwgMS4pOwotfQotCi1mbG9hdCBnZXRSYW5kKHZlYzIg
c2VlZCkgewotICAgIHJldHVybiBmcmFjdChzaW4oZG90KHNlZWQueHksIHZlYzIoMTIuOTg5OCwg
NzguMjMzKSkpICogNDM3NTguNTQ1Myk7Ci19Ci0KLWZsb2F0IGRpdGhlcih2ZWMyIHNlZWQsIGZs
b2F0IHZhcmlhbmNlQW1vdW50KSB7Ci0gICAgZmxvYXQgcmFuZCA9IGdldFJhbmQoc2VlZCk7Ci0g
ICAgZmxvYXQgZGl0aGVyID0gbWl4KC12YXJpYW5jZUFtb3VudCAvIDI1NS4wLCB2YXJpYW5jZUFt
b3VudCAvIDI1NS4wLCByYW5kKTsKLSAgICByZXR1cm4gZGl0aGVyOwotfQotCi12ZWM0IHRvUkdC
RCh2ZWMzIGNvbG9yKSB7Ci0gICAgZmxvYXQgbWF4UkdCID0gbWF4KG1heChjb2xvci5yLCBtYXgo
Y29sb3IuZywgY29sb3IuYikpLCAwLjAwMDAwMDEpOwotICAgIGZsb2F0IEQgPSBtYXgoMjU1LjAg
LyBtYXhSR0IsIDEuKTsKLSAgICBEID0gY2xhbXAoZmxvb3IoRCkgLyAyNTUuMCwgMC4sIDEuKTsK
LSAgICB2ZWMzIHJnYiA9IGNvbG9yLnJnYiAqIEQ7Ci0gICAgcmdiID0gdG9HYW1tYVNwYWNlKHJn
Yik7Ci0gICAgcmV0dXJuIHZlYzQocmdiLCBEKTsKLX0KLQotdmVjMyBmcm9tUkdCRCh2ZWM0IHJn
YmQpIHsKLSAgICByZ2JkLnJnYiA9IHRvTGluZWFyU3BhY2UocmdiZC5yZ2IpOwotICAgIHJldHVy
biByZ2JkLnJnYiAvIHJnYmQuYTsKLX0KLQotbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzMg
dlBvc2l0aW9uVzsKLWxheW91dChsb2NhdGlvbiA9IDEpIG91dCB2ZWMzIHZOb3JtYWxXOwotbGF5
b3V0KGxvY2F0aW9uID0gMikgb3V0IHZlYzMgdkVudmlyb25tZW50SXJyYWRpYW5jZTsKLQotdmVj
MyBjb21wdXRlRW52aXJvbm1lbnRJcnJhZGlhbmNlKHZlYzMgbm9ybWFsKSB7Ci0gICAgcmV0dXJu
IHZTcGhlcmljYWxMMDAKLSAgICAgICAgKyB2U3BoZXJpY2FsTDFfMSAqIChub3JtYWwueSkKLSAg
ICAgICAgKyB2U3BoZXJpY2FsTDEwICogKG5vcm1hbC56KQotICAgICAgICArIHZTcGhlcmljYWxM
MTEgKiAobm9ybWFsLngpCi0gICAgICAgICsgdlNwaGVyaWNhbEwyXzIgKiAobm9ybWFsLnkgKiBu
b3JtYWwueCkKLSAgICAgICAgKyB2U3BoZXJpY2FsTDJfMSAqIChub3JtYWwueSAqIG5vcm1hbC56
KQotICAgICAgICArIHZTcGhlcmljYWxMMjAgKiAoKDMuMCAqIG5vcm1hbC56ICogbm9ybWFsLnop
IC0gMS4wKQotICAgICAgICArIHZTcGhlcmljYWxMMjEgKiAobm9ybWFsLnogKiBub3JtYWwueCkK
LSAgICAgICAgKyB2U3BoZXJpY2FsTDIyICogKG5vcm1hbC54ICogbm9ybWFsLnggLSAobm9ybWFs
LnkgKiBub3JtYWwueSkpOwotfQotCi12b2lkIG1haW4odm9pZCkgewotICAgIHZlYzMgcG9zaXRp
b25VcGRhdGVkID0gcG9zaXRpb247Ci0gICAgdmVjMyBub3JtYWxVcGRhdGVkID0gbm9ybWFsOwot
ICAgIG1hdDQgZmluYWxXb3JsZCA9IHdvcmxkOwotICAgIGdsX1Bvc2l0aW9uID0gdmlld1Byb2pl
Y3Rpb24gKiBmaW5hbFdvcmxkICogdmVjNChwb3NpdGlvblVwZGF0ZWQsIDEuMCk7Ci0gICAgdmVj
NCB3b3JsZFBvcyA9IGZpbmFsV29ybGQgKiB2ZWM0KHBvc2l0aW9uVXBkYXRlZCwgMS4wKTsKLSAg
ICB2UG9zaXRpb25XID0gdmVjMyh3b3JsZFBvcyk7Ci0gICAgbWF0MyBub3JtYWxXb3JsZCA9IG1h
dDMoZmluYWxXb3JsZCk7Ci0gICAgdk5vcm1hbFcgPSBub3JtYWxpemUobm9ybWFsV29ybGQgKiBu
b3JtYWxVcGRhdGVkKTsKLSAgICB2ZWMzIHJlZmxlY3Rpb25WZWN0b3IgPSB2ZWMzKHJlZmxlY3Rp
b25NYXRyaXggKiB2ZWM0KHZOb3JtYWxXLCAwKSkueHl6OwotICAgIHZFbnZpcm9ubWVudElycmFk
aWFuY2UgPSBjb21wdXRlRW52aXJvbm1lbnRJcnJhZGlhbmNlKHJlZmxlY3Rpb25WZWN0b3IpOwot
ICAgIHZlYzIgdXZVcGRhdGVkID0gdmVjMigwLiwgMC4pOwotICAgIHZlYzIgdXYyID0gdmVjMigw
LiwgMC4pOwotICAgIGdsX1Bvc2l0aW9uLnkgKj0gLTEuOwotfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>