<?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>221098</bug_id>
          
          <creation_ts>2021-01-28 13:35:41 -0800</creation_ts>
          <short_desc>Lazily create m_windowCloseWatchpoints so we don&apos;t mistakenly think we have a frame when re-associating a document to a given cached frame</short_desc>
          <delta_ts>2021-02-01 13:41:04 -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>WebCore JavaScript</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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1723481</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-01-28 13:35:41 -0800</bug_when>
    <thetext>We only fire this watchpoint set once, but a page may repeatedly open/close w.r.t back forward cache. This breaks invariants on debug builds, leading to debug crashes, since we try to watch an already fired watchpoint.

On a release build, I&apos;m guessing this could lead to us being able to access properties on N+1 closes that we shouldn&apos;t access otherwise, since the watchpoint won&apos;t fire on N+1.

I think the solution could be as simple as just creating new watchpoint sets each time we need it, and null-ing it out on frameDestroyed().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723955</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-01-29 16:58:34 -0800</bug_when>
    <thetext>&lt;rdar://72894454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723959</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-01-29 17:02:24 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #0)
&gt; We only fire this watchpoint set once, but a page may repeatedly open/close
&gt; w.r.t back forward cache. This breaks invariants on debug builds, leading to
&gt; debug crashes, since we try to watch an already fired watchpoint.
&gt; 
&gt; On a release build, I&apos;m guessing this could lead to us being able to access
&gt; properties on N+1 closes that we shouldn&apos;t access otherwise, since the
&gt; watchpoint won&apos;t fire on N+1.
&gt; 
&gt; I think the solution could be as simple as just creating new watchpoint sets
&gt; each time we need it, and null-ing it out on frameDestroyed().

This wasn&apos;t what was happening.

There&apos;s a scenario where we go back when using the back forward cache, and we reassociate a cached frame with a document that we end up in this state where we create a JSDOMWindow that thinks it doesn&apos;t have a frame, even though it does. It&apos;s just because we haven&apos;t finished the bookkeeping in `FrameLoader::open(CachedFrameBase&amp; cachedFrame)` that JSDOMWindow doesn&apos;t think it has a frame. If we wait to create this watchpoint lazily, when it&apos;s actually needed, the JSDOMWindow will be in a state where we can evaluate if it has a frame or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723970</commentid>
    <comment_count>3</comment_count>
      <attachid>418791</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-01-29 17:18:55 -0800</bug_when>
    <thetext>Created attachment 418791
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723973</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-01-29 17:28:11 -0800</bug_when>
    <thetext>Can we reduce the test? It seems like most of JS &amp; CSS shouldn&apos;t be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723981</commentid>
    <comment_count>5</comment_count>
      <attachid>418791</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-01-29 18:05:01 -0800</bug_when>
    <thetext>Comment on attachment 418791
patch

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

&gt; Source/WebCore/bindings/js/JSDOMWindowCustom.cpp:250
&gt; +    // Because this can only happen once, we don&apos;t need to consider a potential ping-ponging
&gt; +    // between states of having a frame or not having a frame.

This is a bit misleading. It&apos;s possible for DOMWindow::frame() to temporarily return nullptr while it&apos;s inside a page cache.
Maybe rephrase it as once the frame is *destroyed* and that DOMWindow can be associated with at most one frame in its lifetime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723982</commentid>
    <comment_count>6</comment_count>
      <attachid>418791</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-29 18:08:57 -0800</bug_when>
    <thetext>Comment on attachment 418791
patch

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

r=me too

&gt; Source/WebCore/ChangeLog:14
&gt; +        even though we did. It was because we haden&apos;t finished the bookkeeping in

/haden&apos;t/hadn&apos;t/

&gt; Source/WebCore/ChangeLog:16
&gt; +        frame. And DOMWindow  relies on its document to get its frame. 

Extra space after `DOMWindow`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724353</commentid>
    <comment_count>7</comment_count>
      <attachid>418791</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-02-01 12:10:22 -0800</bug_when>
    <thetext>Comment on attachment 418791
patch

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

&gt;&gt; Source/WebCore/ChangeLog:14
&gt;&gt; +        even though we did. It was because we haden&apos;t finished the bookkeeping in
&gt; 
&gt; /haden&apos;t/hadn&apos;t/

will fix

&gt;&gt; Source/WebCore/ChangeLog:16
&gt;&gt; +        frame. And DOMWindow  relies on its document to get its frame. 
&gt; 
&gt; Extra space after `DOMWindow`.

will fix

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowCustom.cpp:250
&gt;&gt; +    // between states of having a frame or not having a frame.
&gt; 
&gt; This is a bit misleading. It&apos;s possible for DOMWindow::frame() to temporarily return nullptr while it&apos;s inside a page cache.
&gt; Maybe rephrase it as once the frame is *destroyed* and that DOMWindow can be associated with at most one frame in its lifetime?

Will rephrase like you suggest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724355</commentid>
    <comment_count>8</comment_count>
      <attachid>418911</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2021-02-01 12:16:38 -0800</bug_when>
    <thetext>Created attachment 418911
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724396</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-01 13:41:01 -0800</bug_when>
    <thetext>Committed r272174: &lt;https://trac.webkit.org/changeset/272174&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418911.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418791</attachid>
            <date>2021-01-29 17:18:55 -0800</date>
            <delta_ts>2021-02-01 12:16:38 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>108074</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTk4
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAx
LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIExhemlseSBj
cmVhdGUgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzIHNvIHdlIGRvbid0IG1pc3Rha2VubHkgdGhp
bmsgd2UgaGF2ZSBhIGZyYW1lIHdoZW4gcmUtYXNzb2NpYXRpbmcgYSBkb2N1bWVudCB0byBhIGdp
dmVuIGNhY2hlZCBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMDk4CisgICAgICAgIDxyZGFyOi8vNzI4OTQ0NTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9kb250LWNy
ZWF0ZS1pbnZhbGlkLXdhdGNocG9pbnQtd2hlbi1nb2luZy1iYWNrLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIE1hbnVhbFRlc3RzL3Jlc291cmNlcy9lbXB0eS10ZXh0LnR4dDogQWRkZWQuCisgICAg
ICAgICogTWFudWFsVGVzdHMvcmVzb3VyY2VzL2Z1bGxfcmVzdWx0cy5qc29uOiBBZGRlZC4KKyAg
ICAgICAgKiBNYW51YWxUZXN0cy9yZXNvdXJjZXMvdGVzdC1yZXN1bHRzLXBhZ2UuaHRtbDogQWRk
ZWQuCisKIDIwMjEtMDEtMjcgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxp
YS5jb20+CiAKICAgICAgICAgU2V0IHJ1YnktaW5kZW50LWxldmVsIHRvIDQKSW5kZXg6IE1hbnVh
bFRlc3RzL2RvbnQtY3JlYXRlLWludmFsaWQtd2F0Y2hwb2ludC13aGVuLWdvaW5nLWJhY2suaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBNYW51YWxUZXN0cy9kb250LWNyZWF0ZS1pbnZhbGlkLXdhdGNocG9p
bnQtd2hlbi1nb2luZy1iYWNrLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTWFudWFsVGVzdHMvZG9u
dC1jcmVhdGUtaW52YWxpZC13YXRjaHBvaW50LXdoZW4tZ29pbmctYmFjay5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisKKzxib2R5
PgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBydW4oKSB7CisgICAgcG9wdXBXaW5kb3cgPSB3aW5k
b3cub3BlbigicmVzb3VyY2VzL3Rlc3QtcmVzdWx0cy1wYWdlLmh0bWwiKTsKKyAgICBjb25zb2xl
LmxvZygiY3JlYXRlZCBwb3B1cCB3aW5kb3ciKTsKKyAgICBwb3B1cFdpbmRvdy5vbmxvYWQgPSAo
KSA9PiB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgbGV0IGEgPSBw
b3B1cFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJhW2hyZWY9J2Zhc3QvbXVsdGlj
b2wvY3Jhc2gtd2hlbi1zcGFubmVyLWNhbmRpZGF0ZS1pcy1vdXQtb2YtZmxvdy1jcmFzaC1sb2cu
dHh0J10iKVswXTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKHBvcHVwV2luZG93LmxvY2F0aW9u
LmhyZWYpOworICAgICAgICAgICAgYS5ocmVmID0gImVtcHR5LXRleHQudHh0IjsKKyAgICAgICAg
ICAgIGxldCBwcmlvckhpc3RvcnlMZW5ndGggPSBwb3B1cFdpbmRvdy5oaXN0b3J5Lmxlbmd0aDsK
KyAgICAgICAgICAgIGEuY2xpY2soKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJjYWxsZWQg
Y2xpY2soKSIpOworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tOYXZpZ2F0ZWQoKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHBvcHVwV2luZG93Lmhpc3RvcnkubGVuZ3RoICE9PSAocHJpb3JIaXN0
b3J5TGVuZ3RoICsgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChjaGVja05h
dmlnYXRlZCwgMTAwKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAg
ICAgICAgICBjb25zb2xlLmxvZyhwb3B1cFdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKKyAgICAgICAg
ICAgICAgICAgICAgcG9wdXBXaW5kb3cuaGlzdG9yeS5iYWNrKCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnNvbGUubG9nKCJzZXR0aW5nIHRpbWVyIHRvIG5vdGlmeURvbmUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IAorICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc29sZS5sb2cocG9wdXBXaW5kb3cubG9jYXRpb24uaHJlZik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zb2xlLmxvZygiY2FsbGluZyBub3RpZnlkb25lIik7CisgICAgICAgICAgICAg
ICAgICAgIH0sIDI1MDApOworICAgICAgICAgICAgICAgIH0sIDI1MDApOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgc2V0VGltZW91dChjaGVja05hdmlnYXRlZCwgMTAwKTsKKyAgICAgICAg
fSwgMjAwMCk7CisgICAgfTsKK30KKworPC9zY3JpcHQ+CisKKzxhIG9uY2xpY2s9InJ1bigpIj4g
Y2xpY2sgbWUgPC9hPgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBNYW51YWxUZXN0cy9yZXNv
dXJjZXMvZW1wdHktdGV4dC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogTWFudWFsVGVzdHMvcmVzb3Vy
Y2VzL2Z1bGxfcmVzdWx0cy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIE1hbnVhbFRlc3RzL3Jlc291cmNl
cy9mdWxsX3Jlc3VsdHMuanNvbgkobm9uZXhpc3RlbnQpCisrKyBNYW51YWxUZXN0cy9yZXNvdXJj
ZXMvZnVsbF9yZXN1bHRzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorQUREX1JF
U1VMVFMoeyJ0ZXN0cyI6eyJwbGF0Zm9ybSI6eyJtYWMiOnsiZmFzdCI6eyJ0ZXh0Ijp7ImNvbWJp
bmluZy1jaGFyYWN0ZXItc2VxdWVuY2UtZmFsbGJhY2suaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mg
RkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibGlnYXR1cmUtc3ViZGl2
aXNpb24uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlfSwidmVydGljYWwtbm8tc2lkZXdheXMuaHRtbCI6eyJleHBlY3RlZCI6IlBB
U1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwic3lzdGVtRm9udC5o
dG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIi
OnRydWV9fSwib3ZlcmZsb3ciOnsib3ZlcmZsb3ctc2Nyb2xsYmFyLWhpdC10ZXN0Lmh0bWwiOnsi
ZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fSwib2Jq
YyI6eyJsb25nbG9uZ1Rlc3QuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQi
OiJQQVNTIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJ3ZWJTY3JpcHRPYmpl
Y3QtaGFzV2ViU2NyaXB0S2V5Lmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVk
IjoiUEFTUyIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImxvYWRlciI6eyJm
aWxlLXVybC1taW1ldHlwZXMtMi5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRF
WFQiLCJoYXNfc3RkZXJyIjp0cnVlfX19fX0sIndlYmdsIjp7IjIuMC4wIjp7ImNvbmZvcm1hbmNl
Ijp7InRleHR1cmVzIjp7Im1pc2MiOnsidGV4dHVyZS1jb3B5aW5nLWZlZWRiYWNrLWxvb3BzLmh0
bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IkNS
QVNIIiwiaGFzX3N0ZGVyciI6dHJ1ZX19fX19LCIxLjAuMyI6eyJjb25mb3JtYW5jZSI6eyJ0ZXh0
dXJlcyI6eyJ0ZXh0dXJlLWNvcHlpbmctZmVlZGJhY2stbG9vcHMuaHRtbCI6eyJyZXBvcnQiOiJS
RUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJy
Ijp0cnVlfX19fX0sImZhc3QiOnsiY3NzLWdlbmVyYXRlZC1jb250ZW50Ijp7ImluaXRpYWwtbGV0
dGVyLWZpcnN0LWxpbmUtd3JhcHBpbmcuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFs
IjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2Vf
ZGlmZl9wZXJjZW50IjowLjkzfX0sInRleHQiOnsiYXJhYmljLXp3ai1hbmQtenduai5odG1sIjp7
ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVl
LCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sImZvbnQtdmFyaWF0aW9ucy1mZWF0dXJlLWRldGVjdGlv
bi5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIi
OnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjEyLjE2fSwi
ZW1waGFzaXMtdmVydGljYWwuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhU
IiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImVtb2ppLWdlbmRlci02Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJ
TUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpb
Ij09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6OC41Mn0sIm11bHRpZ2x5cGgtY2hhcmFjdGVycy5o
dG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVl
fSwiZW1vamktZ2VuZGVyLTkuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1B
R0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9w
ZXJjZW50IjowLjM3fSwiZW1vamktZ2VuZGVyLTMuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwi
YWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwi
aW1hZ2VfZGlmZl9wZXJjZW50Ijo0LjE3fSwidGV4dC1zZWN1cml0eS1kaXNjLWJ1bGxldC1wdWEu
aHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0
cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjM3fSwibGV0
dGVyLXNwYWNpbmctc2hhcGluZy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVh
bCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sImFyYWJp
Yy1ibG9ja2VkLWZvbnRzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwic3lzdGVtLWZv
bnQtamFwYW5lc2Utc3ludGhldGljLWl0YWxpYy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFH
RSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0i
XX0sInVzZXItaW5zdGFsbGVkLWZvbnRzIjp7ImV4dGVuZGVkLWNoYXJhY3Rlci5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJy
ZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInNoYWRvdy1mYW1pbHkuaHRtbCI6eyJleHBlY3RlZCI6IlBB
U1MgSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlw
ZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuNjl9LCJzaGFkb3ctcG9zdHNjcmlwdC1m
YW1pbHkuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhh
c19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQi
OjAuNjl9LCJzaGFkb3ctZGlzYWJsZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFj
dHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sInNo
YWRvdy1mYW1pbHktZGlzYWJsZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVh
bCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sImxvY2Fs
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRl
cnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwic2hhZG93LXBvc3RzY3JpcHQuaHRtbCI6
eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRy
dWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuNjl9LCJleHRl
bmRlZC1jaGFyYWN0ZXItd2l0aC11c2VyLWZvbnQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1B
R0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIh
PSJdfSwic2hhZG93LXBvc3RzY3JpcHQtZGlzYWJsZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJ
TUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsi
IT0iXX0sImRpc2FibGUuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQ
QVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19LCJzaGFkb3ctcG9z
dHNjcmlwdC1mYW1pbHktZGlzYWJsZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFj
dHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sInN5
c3RlbS11aS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwi
aGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19LCJzaGFkb3cuaHRtbCI6eyJl
eHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUs
InJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuNjl9fSwibG9jYWxl
LXNoYXBpbmcuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwi
aGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19LCJ3b2ZmMi10b3RhbHNmbnRz
aXplLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19z
dGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwiY2FudmFzLWNvbG9yLWZvbnRzIjp7
InN0cm9rZS1jb2xvci1zaGFkb3ctQ09MUi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIsImFjdHVh
bCI6IklNQUdFIiwicmVwb3J0IjoiUkVHUkVTU0lPTiIsImhhc19zdGRlcnIiOnRydWUsInJlZnRl
c3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMzF9LCJzdHJva2UtY29sb3It
Q09MUi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IklNQUdFIiwicmVwb3J0Ijoi
UkVHUkVTU0lPTiIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFn
ZV9kaWZmX3BlcmNlbnQiOjAuMzF9fSwiaHlwaGVuLW1pbi1wcmVmZXJyZWQtd2lkdGguaHRtbCI6
eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJy
ZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAxfSwiZW1vamktZ2Vu
ZGVyLTQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3Rk
ZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjozLjZ9
LCJtYWMiOnsic2VsZWN0LWNoYXJhY3Rlci1iZWZvcmUtemVyby13aWR0aC1qb2luZXIuaHRtbCI6
eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1
ZSwicmVmdGVzdF90eXBlIjpbIj09Il19fSwiaW50ZXJuYXRpb25hbCI6eyJiaWRpLUFOLWFmdGVy
LWVtcHR5LXJ1bi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIs
Imhhc19zdGRlcnIiOnRydWV9LCJiaWRpLUNTLWFmdGVyLUFOLmh0bWwiOnsiZXhwZWN0ZWQiOiJQ
QVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInN5c3RlbS1sYW5n
dWFnZSI6eyJjb21wb3NpdGlvbi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwi
YWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJzeXN0ZW0tZm9udC1wdW5jdHVhdGlv
bi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhh
c19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UiOnsibmF2aWdhdG9yLWxhbmd1YWdl
LWZyLUNBLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhU
IiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS1lcy1NWC5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRy
dWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtemgtSGFudC1ISy5odG1sIjp7ImV4cGVjdGVkIjoiUEFT
UyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0
b3ItbGFuZ3VhZ2UtaGkuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVh
bCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLWZyLmh0bWwi
OnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS16aC1UVy5odG1sIjp7ImV4cGVjdGVkIjoiUEFT
UyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0
b3ItbGFuZ3VhZ2UtemgtSGFucy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwi
YWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtZXMt
RVMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRFWFQiLCJo
YXNfc3RkZXJyIjp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLXpoLUhLLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
Im5hdmlnYXRvci1sYW5ndWFnZS1wdC1QVC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElN
QUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3Vh
Z2UtemgtSGFudC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoi
VEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtZW4tR0IuaHRtbCI6
eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJy
Ijp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLWphLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1s
YW5ndWFnZS1lbi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoi
VEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtZW4tVVMuaHRtbCI6
eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJy
Ijp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLXJ1Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1s
YW5ndWFnZS1wdC1CUi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFs
IjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtZXMtNDE5Lmh0
bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0
ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS1lcy5odG1sIjp7ImV4cGVjdGVkIjoiUEFT
UyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fSwiZGVjbGFy
YXRpdmUtbGFuZ3VhZ2UuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVh
bCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiYXJhYmljLWdseXBoLWNhY2hlLWZpbGwtY29t
YmluZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfSwiaGFuLXF1b3Rlcy5odG1s
Ijp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3Rk
ZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sImhpbmRpLXN5c3RlbS1mb250LXB1bmN0
dWF0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJQQVNT
IiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19fSwidGhhaS1saW5lLWJy
ZWFrcy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19z
dGRlcnIiOnRydWV9fSwiZW1vamktZ2VuZGVyLTUuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwi
YWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwi
aW1hZ2VfZGlmZl9wZXJjZW50Ijo1LjB9LCJsZXR0ZXJwcmVzcy1kaWZmZXJlbnQuaHRtbCI6eyJl
eHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0
ZXN0X3R5cGUiOlsiIT0iXX0sImNyYXNoLWNvbXBsZXgtdGV4dC1zdXJyb2dhdGUuaHRtbCI6eyJl
eHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwi
ZW1vamktZ2VuZGVyLTguaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0Ui
LCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJj
ZW50IjoyLjcxfSwiY2hpbmVzZS1mb250LW5hbWUtYWxpYXNlcy0yLmh0bWwiOnsiZXhwZWN0ZWQi
OiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBl
IjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MS44Nn0sIndvZmYyLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRl
c3RfdHlwZSI6WyI9PSJdfSwiY29udHJvbC1jaGFyYWN0ZXJzIjp7InZpc2libGUtY29udHJvbC1j
aGFyYWN0ZXJzLTMuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJo
YXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sInZpc2libGUtY29udHJvbC1j
aGFyYWN0ZXJzLTMueGh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwi
aGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19LCJ2aXNpYmxlLWNvbnRyb2wt
Y2hhcmFjdGVycy0yLnhodG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfSwidmlzaWJsZS1jb250cm9s
LWNoYXJhY3RlcnMtMi5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfSwidmlzaWJsZS1jb250cm9s
LWNoYXJhY3RlcnMtMS5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfX19LCJwYXJzZXIiOnsieG1s
LWVycm9yLWFkb3B0ZWQueG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJhZG9wdGlvbi1hZ2VuY3ktdW5sb2FkLWlmcmFtZS00
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIFRJTUVPVVQiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0
ZGVyciI6dHJ1ZX19LCJkeW5hbWljIjp7InRleHQtY29tYmluZS5odG1sIjp7ImV4cGVjdGVkIjoi
RkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImxvYWRlciI6eyJqYXZh
c2NyaXB0LXVybC1pbi1lbWJlZC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFs
IjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJyZWRpcmVjdC10by1pbnZhbGlkLXVybC11c2lu
Zy1tZXRhLXJlZnJlc2gtZGlzYWxsb3dlZC1hc3luYy1kZWxlZ2F0ZXMuaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiZG9jdW1l
bnQtd2l0aC1mcmFnbWVudC11cmwtNC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwi
YWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJyZWRpcmVjdC10by1pbnZhbGlkLXVy
bC11c2luZy1tZXRhLXJlZnJlc2gtY2FsbHMtcG9saWN5LWRlbGVnYXRlLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImRvY3Vt
ZW50LXdpdGgtZnJhZ21lbnQtdXJsLTMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImZyYW1lcyI6eyJzYW5kYm94ZWQt
aWZyYW1lLXBsdWdpbnMuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQ
QVNTIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJjcmFzaC1kdXJpbmctaWZy
YW1lLWxvYWQtc3RvcC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJmbGF0dGVuaW5nIjp7ImZyYW1lc2V0LWZsYXR0ZW5p
bmctc3ViZnJhbWVzZXRzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJU
RVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImZyYW1lc2V0LWZsYXR0ZW5pbmctZ3JpZC5odG1sIjp7
ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9
LCJpZnJhbWUtZmxhdHRlbmluZy1maXhlZC1oZWlnaHQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mg
RkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiaWZyYW1lLWZsYXR0ZW5p
bmctb3V0LW9mLXZpZXcuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRF
WFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiaWZyYW1lLWZsYXR0ZW5pbmctb2Zmc2NyZWVuLmh0bWwi
OnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1
ZX0sImZyYW1lc2V0LWZsYXR0ZW5pbmctYWR2YW5jZWQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mg
RkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0sInNhbmRib3hlZC1pZnJh
bWUtYWJvdXQtYmxhbmsuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQ
QVNTIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJzYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tYWxsb3dlZC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3Rl
ZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJoYXJuZXNzIjp7
InNhbXBsZS1mYWlsLW1pc21hdGNoLXJlZnRlc3QuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwi
d29udGZpeCI6dHJ1ZSwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0
X3R5cGUiOlsiIT0iXX19LCJjc3MtaW50cmluc2ljLWRpbWVuc2lvbnMiOnsiaGVpZ2h0LXRhYmxl
cy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIi
OnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDJ9LCJo
ZWlnaHQtY3NzLXRhYmxlcy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFH
RSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3Bl
cmNlbnQiOjAuMDR9fSwiaW1hZ2VzIjp7ImFzeW5jLWltYWdlLWJvZHktYmFja2dyb3VuZC1pbWFn
ZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwiYWN0dWFsIjoiVElNRU9VVCIsImhh
c19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwiYW5pbWF0ZWQtcG5nLWxvb3At
Y291bnQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFz
X3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJhbmltYXRlZC1naWYtbG9vcC1j
b3VudC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sIndlYnAtYXMtaW1hZ2UuaHRtbCI6
eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRy
dWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjI0Ljk5fSwiZ2lm
LWxvb3AtY291bnQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhh
c19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwiaW1hZ2UtY29weS1tZW1vcnkt
dXNhZ2UuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX0sImFuaW1hdGVkLWdpZi1uby1sYXlvdXQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdF
IiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0i
XSwiaW1hZ2VfZGlmZl9wZXJjZW50IjoxLjE0fSwic2xvd2VyLWFuaW1hdGlvbi10aGFuLWRlY29k
aW5nLWltYWdlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwi
aGFzX3N0ZGVyciI6dHJ1ZX0sImFuaW1hdGVkLWltYWdlLWRpZmZlcmVudC1kZXN0LXNpemUuaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6
dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJpbWFnZS1jb250cm9scy1iYXNpYy5odG1sIjp7
ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiYW5p
bWF0ZWQtZ2lmLXNjcm9sbGluZy1jcmFzaC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VU
IiwiYWN0dWFsIjoiVElNRU9VVCIsImhhc19zdGRlcnIiOnRydWV9LCJyZXNldC1pbWFnZS1hbmlt
YXRpb24uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlfX0sInRhYmxlIjp7ImhpdHRlc3QtdGFibGVjZWxsLXJpZ2h0LWVkZ2UuaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0
cnVlfSwiYm9yZGVyLWNvbGxhcHNpbmciOnsiY29sbGFwc2VkLWJvcmRlcnMtYWRqb2luaW5nLXNl
Y3Rpb25zLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0
ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4w
N319LCJoaXR0ZXN0LXRhYmxlY2VsbC13aXRoLWJvcmRlcnMtcmlnaHQtZWRnZS5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fSwi
bGF5ZXJzIjp7Im5vLWNsaXBwaW5nLW92ZXJmbG93LWhpZGRlbi1hZGRlZC1hZnRlci10cmFuc2Zv
cm0uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0
ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19fSwiY2FudmFzIjp7ImNhbnZhcy1lbGxp
cHNlLXplcm8tbGluZXRvLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIs
Imhhc19zdGRlcnIiOnRydWV9LCJjYW52YXMtZmlsbFJlY3QtZ3JhZGllbnQtc2hhZG93Lmh0bWwi
OnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1
ZX0sImNhbnZhcy1jb21wb3NpdGUtYWxwaGEuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiY2FudmFzLXNjYWxlLXN0cm9rZVBh
dGgtc2hhZG93Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwi
aGFzX3N0ZGVyciI6dHJ1ZX0sIjJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmdyYWRpZW50Lmh0
bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6
dHJ1ZX0sImNhbnZhcy1xdWFkcmF0aWMtc2FtZS1lbmRwb2ludC5odG1sIjp7ImV4cGVjdGVkIjoi
RkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiY2FudmFzLWRyYXctY2Fu
dmFzLW9uLWNhbnZhcy1zaGFkb3cuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVh
bCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwic2V0LWNvbG9ycy5odG1sIjp7ImV4cGVjdGVk
IjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiY2FudmFzLWN1cnJl
bnRDb2xvci5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3Rk
ZXJyIjp0cnVlfSwiY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxlZC1yZXBhaW50Lmh0bWwiOnsi
ZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
IndlYmdsIjp7IndlYmdsLWNvbXByZXNzZWQtdGV4dHVyZS1zaXplLWxpbWl0Lmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIEZBSUwgVElNRU9VVCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0
cnVlfSwiYnVmZmVyRGF0YS1vZmZzZXQtbGVuZ3RoLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImNvbnRleHQtY3JlYXRpb24t
YXR0cmlidXRlcy5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInRleC1pbWFnZS1hbmQtc3ViLWlt
YWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS1yZ2I1NjUuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJ
TCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwidGV4LWltYWdlLWFuZC1zdWIt
aW1hZ2UtMmQtd2l0aC1hcnJheS1idWZmZXItdmlldy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBG
QUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJ0ZXgtaW1hZ2UtYW5kLXN1
Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEtcmdiYTQ0NDQuaHRtbCI6eyJleHBlY3RlZCI6IlBB
U1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwid2ViZ2wtZHJhdy1i
dWZmZXJzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFz
X3N0ZGVyciI6dHJ1ZX0sInJlYWQtcGl4ZWxzLXRlc3QuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mg
RkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwidGV4LWltYWdlLWFuZC1z
dWItaW1hZ2UtMmQtd2l0aC1wb3RlbnRpYWxseS1zdWJzYW1wbGVkLWltYWdlLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJDUkFTSCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwicHJvZ3Jh
bS10ZXN0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRl
cnIiOnRydWV9LCJ0ZXgtaW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEtcmdi
YTU1NTEuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlfSwib2VzLWVsZW1lbnQtaW5kZXgtdWludC5odG1sIjp7ImV4cGVjdGVkIjoi
UEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJ0ZXgtaW1hZ2Ut
YW5kLXN1Yi1pbWFnZS0yZC13aXRoLWltYWdlLWRhdGEuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mg
RkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwidGV4SW1hZ2UyRC1tc2Ut
ZmxpcFktZmFsc2UuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6IlBB
U1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwib2VzLXRleHR1cmUtZmxvYXQtbGluZWFyLmh0bWwiOnsi
ZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19
fSwibXVsdGljb2wiOnsicGFnaW5hdGlvbiI6eyJSaWdodFRvTGVmdC10Yi5odG1sIjp7ImV4cGVj
dGVkIjoiRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiUmlnaHRUb0xl
ZnQtcmwuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX19LCJtdWx0aWNvbC13aXRoLWNoaWxkLXJlbmRlckxheWVyLWZvci1pbnB1dC5odG1s
Ijp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUs
InJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDF9LCJjcmFzaC13
aGVuLXNwYW5uZXItY2FuZGlkYXRlLWlzLW91dC1vZi1mbG93Lmh0bWwiOnsicmVwb3J0IjoiUkVH
UkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IkNSQVNIIiwiaGFzX3N0ZGVyciI6
dHJ1ZX0sImZpeGVkLXN0YWNrLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklN
QUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZf
cGVyY2VudCI6MC4wMX0sIm1peGVkLW9wYWNpdHktZml4ZWQtdGVzdC5odG1sIjp7ImV4cGVjdGVk
IjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlw
ZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjguNTR9fSwieG1saHR0cHJlcXVlc3QiOnsi
eG1saHR0cHJlcXVlc3QtcmVjdXJzaXZlLXN5bmMtZXZlbnQuaHRtbCI6eyJleHBlY3RlZCI6IlBB
U1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sInRleHQtYXV0b3Np
emluZyI6eyJpb3MiOnsidGV4dC1hdXRvc2l6aW5nLWFmdGVyLWJhY2suaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0
ZXN0X3R5cGUiOlsiPT0iXX19fSwicnVieSI6eyJiYXNlLXNob3J0ZXItdGhhbi10ZXh0Lmh0bWwi
OnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fSwi
d29ya2VycyI6eyJ3b3JrZXItdGVybWluYXRlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIFRJTUVP
VVQiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJwcmVsb2FkZXIiOnsiaW1h
Z2Utc3Jjc2V0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwi
aGFzX3N0ZGVyciI6dHJ1ZX19LCJmb3JtcyI6eyJzZWFyY2hmaWVsZC1oZWlnaHRzLmh0bWwiOnsi
ZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
InRleHRhcmVhIjp7InRleHRhcmVhLXN0YXRlLXJlc3RvcmUuaHRtbCI6eyJleHBlY3RlZCI6IlBB
U1MgRkFJTCBUSU1FT1VUIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fSwic2Vh
cmNoLWV2ZW50LWRlbGF5Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQ
QVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImlucHV0LXNldC1jb21wb3NpdGlvbi1zY3JvbGwuaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0
cnVlfSwiZm9jdXMtc2VsZWN0aW9uLXRleHRhcmVhLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInN0YXRlLXJlc3RvcmUtdG8t
bm9uLWVkaXRlZC1jb250cm9scy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFs
IjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJsaXN0Ym94LXNjcm9sbGJhci1oaXQtdGVzdC5o
dG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVl
fX0sImxheW91dGZvcm1hdHRpbmdjb250ZXh0Ijp7InJ1bi1leHBhbnNpb24tZXh0ZW5kcy1saW5l
LWNvbnRlbnQtd2lkdGguaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0Ui
LCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJj
ZW50IjowLjQ0fSwicXVpcmstbWFyZ2luLW5vdC1jb2xsYXBzZS13aGVuLWZsb2F0aW5nLmh0bWwi
OnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwi
cmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4yN30sImlubGluLWJv
eC1jb250ZW50LWZpdHMtYnV0LXRoZS1ib3gtZG9lcy1ub3QuaHRtbCI6eyJleHBlY3RlZCI6IklN
QUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsi
PT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjYyfSwiYnItYW5kLXdici1zaW1wbGUuaHRtbCI6
eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJy
ZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjM0fSwiaW50cnVzaXZl
LWZsb2F0cy10YWtlcy1lbnRpcmUtaG9yaXpvbnRhbC1zcGFjZS5odG1sIjp7ImV4cGVjdGVkIjoi
SU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6
WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuNzJ9LCJob3Jpem9udGFsLXNpemluZy13aXRo
LXRyYWlsaW5nLWxldHRlci1zcGFjaW5nLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVh
bCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdl
X2RpZmZfcGVyY2VudCI6MC45M30sIndici1zaW1wbGUuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdF
IiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0i
XSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAyfX0sInBlcmZvcm1hbmNlIjp7InBlcmZvcm1hbmNl
LW5vdy10aW1lc3RhbXBzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQ
QVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJib3JkZXJzIjp7ImJvcmRlci1wYWludGluZy1kb3R0
ZWQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJy
Ijp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjoxLjA4fSwi
Ym9yZGVyLXBhaW50aW5nLWRhc2hlZC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwi
OiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9k
aWZmX3BlcmNlbnQiOjAuNzF9LCJib3JkZXItcGFpbnRpbmctZG91YmxlLmh0bWwiOnsiZXhwZWN0
ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90
eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC40N30sImJvcmRlci1maXQuaHRtbCI6
eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVl
fSwiYm9yZGVyLWZpdC0yLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQ
QVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJzdWItcGl4ZWwiOnsiYmxvY2std2l0aC1tYXJnaW4t
b3ZlcmZsb3cuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNf
c3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50Ijow
LjF9LCJjbGllbnQtd2lkdGgtaGVpZ2h0LXNuYXBwaW5nLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlM
IiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJmaWxlLXVwbG9hZC1jb250cm9s
LWF0LWZyYWN0aW9uYWwtb2Zmc2V0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6
IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2Rp
ZmZfcGVyY2VudCI6MC4wMn0sImlucHV0LWNhcmV0LW9uLXN1YnBpeGVsLWJvdW5kLmh0bWwiOnsi
ZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVm
dGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4wMX19LCJldmVudHMiOnsi
c2Nyb2xsLWRpdi13aXRoLXByZXZlbnQtZGVmYXVsdC1pbi1zdWJmcmFtZS5odG1sIjp7ImV4cGVj
dGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiY29udGV4dC1u
b2RyYWcuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX0sImF0dGVtcHQtc2Nyb2xsLXdpdGgtbm8tc2Nyb2xsYmFycy5odG1sIjp7ImV4cGVj
dGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwidGFiaW5kZXgt
Zm9jdXMtYmx1ci1hbGwuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6
IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwibW91c2UtY3Vyc29yLWNoYW5nZS5odG1sIjp7ImV4
cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibW91c2Vv
dXQtb24td2luZG93Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhh
c19zdGRlcnIiOnRydWV9LCJjb25zdHJ1Y3RvcnMiOnsiY2xvc2UtZXZlbnQtY29uc3RydWN0b3Iu
aHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoi
VEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJvdmVyZmxvdy1ldmVudC1jb25zdHJ1Y3Rvci5odG1s
Ijp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhU
IiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJiZWZvcmUtdW5sb2FkLWFkb3B0LXN1YmZyYW1lLXRvLW91
dHNpZGUuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6IlBBU1MiLCJo
YXNfc3RkZXJyIjp0cnVlfSwib3ZlcmZsb3ctc2Nyb2xsLWZha2UtbW91c2UtbW92ZS5odG1sIjp7
ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9
fSwiY3NzIjp7InBhcnNpbmctY3NzLWFsbG93ZWQtc3RyaW5nLWNoYXJhY3RlcnMuaHRtbCI6eyJl
eHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwi
b2JqZWN0LWZpdCI6eyJvYmplY3QtZml0LWNhbnZhcy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJ
TUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpb
Ij09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4wNH19LCJ2ZXJ0aWNhbC1hbGlnbi1iYXNlbGlu
ZS1yb3dzcGFuLTAxMC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNl
bnQiOjAuNDh9LCJzdGlja3kiOnsiaW5saW5lLXN0aWNreS1hYnNwb3MtY2hpbGQuaHRtbCI6eyJl
eHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwi
cmVmdGVzdF90eXBlIjpbIj09Il19LCJpbmxpbmUtc3RpY2t5Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQ
QVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlw
ZSI6WyI9PSJdfSwic3RpY2t5LXRvcC16b29tZWQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwi
YWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwi
aW1hZ2VfZGlmZl9wZXJjZW50IjoxMy41Nn0sInN0aWNreS1ib3RoLXNpZGVzLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJl
ZnRlc3RfdHlwZSI6WyI9PSJdfX0sInJlYWQtb25seS1yZWFkLXdyaXRlLWlucHV0LWJhc2ljcy5o
dG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRy
dWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMzV9LCJyZXNp
emUtY29ybmVyLXRyYWNraW5nLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwi
OiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImlucHV0LXNlYXJjaC1wYWRkaW5nLmh0bWwiOnsi
ZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJwc2V1
ZG8tdmlzaXRlZC1iYWNrZ3JvdW5kLWNvbG9yLW9uLWlucHV0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJ
TUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpb
Ij09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4zNn0sImNvdW50ZXJzIjp7ImVsZW1lbnQtcmVt
b3ZhbC1jcmFzaC54aHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1Mi
LCJoYXNfc3RkZXJyIjp0cnVlfX19LCJoaWRwaSI6eyJmaWx0ZXJzLWFuZC1pbWFnZS1idWZmZXIt
cmVzb2x1dGlvbi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1Mi
LCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX19LCJjc3MtZ3JpZC1sYXlv
dXQiOnsiZ3JpZC1zaG9ydGhhbmRzLXN0eWxlLWZvcm1hdC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJ
TCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwicG9zaXRpb25lZC1ncmlkLWNv
bnRhaW5lci1wZXJjZW50YWdlLXRyYWNrcy5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVh
bCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiZ3JpZC1hbGlnbi1iYXNlbGluZS12ZXJ0aWNh
bC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0
cnVlfX0sIm1lZGlhY2FwdHVyZWZyb21lbGVtZW50Ijp7IkNhbnZhc0NhcHR1cmVNZWRpYVN0cmVh
bS0yZC1ldmVudHMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6IlBB
U1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sIm92ZXJmbG93Ijp7InNjcm9sbGJhci1jbGljay1yZXRh
aW5zLWZvY3VzLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19z
dGRlcnIiOnRydWV9LCJob3Jpem9udGFsLXNjcm9sbC1hZnRlci1iYWNrLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIFRJTUVPVVQiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJz
Y3JvbGxpbmciOnsicnRsLXNjcm9sbGJhcnMtc2ltcGxlLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFH
RSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9
Il19LCJydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmluZy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0Ui
LCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJd
LCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMjh9LCJydGwtc2Nyb2xsYmFycy1hbmltYXRpb24tcHJv
cGVydHkuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX0sInJ0bC1zY3JvbGxiYXJzLWlmcmFtZS1vZmZzZXQuaHRtbCI6eyJleHBlY3RlZCI6
IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUi
OlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjE4fSwicnRsLXNjcm9sbGJhcnMuaHRtbCI6
eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJy
ZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjc4fSwicnRsLXNjcm9s
bGJhcnMtdGV4dC1zZWxlY3Rpb24uaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoi
SU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlm
Zl9wZXJjZW50IjowLjAxfSwic2Nyb2xsYWJsZS1hcmVhLWZyYW1lLXplcm8tc2l6ZS1hbmQtYm9y
ZGVyLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0
ZGVyciI6dHJ1ZX0sInJ0bC1zY3JvbGxiYXJzLXBvc2l0aW9uLWFic29sdXRlLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVz
dF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4wMX0sInJ0bC1zY3JvbGxiYXJz
LWVsZW1lbnRGcm9tUG9pbnQtc3RhdGljLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFs
IjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJydGwtc2Nyb2xsYmFycy1wb3NpdGlvbmVkLWlu
dGVyc2VjdC1zY3JvbGxiYXJzLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBB
U1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxi
YXJzLW92ZXJmbG93LWVsZW1lbnRGcm9tUG9pbnQuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJh
Y3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInJ0bC1zY3JvbGxiYXJzLWlmcmFtZS1z
Y3JvbGxlZC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19z
dGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAu
MDF9LCJydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNpbXBsZS5odG1sIjp7ImV4cGVjdGVkIjoiSU1B
R0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9
Il19LCJydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNjcm9sbC5odG1sIjp7ImV4cGVjdGVkIjoiSU1B
R0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09
Il19LCJydGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1sIjp7ImV4cGVj
dGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3Rf
dHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDF9LCJydGwtc2Nyb2xsYmFycy1s
aXN0Ym94LXNlbGVjdC1yaWdodC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJQ
QVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJydGwtc2Nyb2xs
YmFycy1vdmVyZmxvdy1jb250ZW50cy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwi
OiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJydGwtc2Ny
b2xsYmFycy1vdmVyZmxvdy1wb3NpdGlvbi1hYnNvbHV0ZS5odG1sIjp7ImV4cGVjdGVkIjoiSU1B
R0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09
Il19LCJydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy10ZXh0LXNlbGVjdGlvbi1zY3JvbGxlZC5odG1s
Ijp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwi
cmVmdGVzdF90eXBlIjpbIj09Il19LCJydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy5odG1sIjp7ImV4
cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVz
dF90eXBlIjpbIj09Il19LCJydGwtc2Nyb2xsYmFycy1saXN0Ym94LXNlbGVjdC1sZWZ0Lmh0bWwi
OnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJy
ZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXNpbXBsZS5odG1s
Ijp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwi
cmVmdGVzdF90eXBlIjpbIiE9Il19LCJydGwtc2Nyb2xsYmFycy1vdmVyZmxvdy1wYWRkaW5nLmh0
bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVl
LCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxiYXJzLWFsdGVybmF0ZS1ib2R5LWRp
ci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3JvbGxiYXItcGxhY2VtZW50LTIuaHRtbCI6eyJleHBl
Y3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3Rf
dHlwZSI6WyI9PSJdfSwicnRsLXNjcm9sbGJhcnMtcG9zaXRpb24tZml4ZWQuaHRtbCI6eyJleHBl
Y3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0
X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAxfSwicnRsLXNjcm9sbGJhcnMt
b3ZlcmZsb3ctZGlyLXJ0bC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJQQVNT
IiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJydGwtc2Nyb2xsYmFy
cy1saXN0Ym94Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxiYXJzLWFsdGVy
bmF0ZS1pZnJhbWUtYm9keS1kaXItYXR0ci1kb2VzLW5vdC11cGRhdGUtc2Nyb2xsYmFyLXBsYWNl
bWVudC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRl
cnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuNTh9
fSwiYW5pbWF0aW9uIjp7InJlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRpbWUtdW5pdC5odG1sIjp7
ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9
fSwicmVwYWludCI6eyJib3JkZXItZml0LWxpbmVzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09
Il19LCJoaWRwaS13cm9uZy1yZXBhaW50LXJlY3Qtd2hlbi1wYXJlbnQtaGFzLW5vbmNvbXBvc2l0
aW5nLXRyYW5zZm9ybS5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJo
YXNfc3RkZXJyIjp0cnVlfSwiYWRkLXRhYmxlLW92ZXJwYWludC5odG1sIjp7ImV4cGVjdGVkIjoi
UEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJsaXN0LWl0ZW0t
ZXF1YWwtc3R5bGUtY2hhbmdlLW5vLXJlcGFpbnQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJ
TCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiamFwYW5lc2Utcmwtc2VsZWN0
aW9uLXJlcGFpbnQuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFz
X3N0ZGVyciI6dHJ1ZX0sInZlcnRpY2FsLXRleHQtcmVwYWludC5odG1sIjp7ImV4cGVjdGVkIjoi
UEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJvYnNjdXJlZC1i
YWNrZ3JvdW5kLW5vLXJlcGFpbnQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVh
bCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiamFwYW5lc2Utcmwtc2VsZWN0aW9uLWNsZWFy
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRy
dWV9LCJyZXBhaW50LWFjcm9zcy13cml0aW5nLW1vZGUtYm91bmRhcnkuaHRtbCI6eyJleHBlY3Rl
ZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJ3cml0aW5nLW1v
ZGUiOnsiYnJva2VuLWlkZW9ncmFwaC1zbWFsbC1jYXBzLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlM
IElNQUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJqYXBhbmVzZS1sci1z
ZWxlY3Rpb24uaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0
ZGVyciI6dHJ1ZX0sImphcGFuZXNlLXJsLXRleHQuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJh
Y3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInZlcnRpY2FsLXN1YnN0LWZvbnQtdmVy
dC1uby1kZmx0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwiamFwYW5lc2UtbHItdGV4
dC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0
cnVlfSwiamFwYW5lc2Utcmwtc2VsZWN0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0
dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJib3JkZXItdmVydGljYWwtbHIuaHRtbCI6
eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImZh
bGxiYWNrLW9yaWVudGF0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVY
VCIsImhhc19zdGRlcnIiOnRydWV9fSwiZG9tIjp7Ikdlb2xvY2F0aW9uIjp7InBhZ2UtcmVsb2Fk
LWNhbmNlbC1wZXJtaXNzaW9uLXJlcXVlc3RzLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIFRJTUVP
VVQiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJydGwtc2Nyb2xsLXRvLWxl
ZnRtb3N0LWFuZC1yZXNpemUuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhU
IiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImxpbmtpZnktcGhvbmUtbnVtYmVycy5odG1sIjp7ImV4cGVj
dGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3Rf
dHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMTF9LCJXaW5kb3ciOnsid2luZG93
LXByb3BlcnRpZXMtcGVyZm9ybWFuY2UtcmVzb3VyY2UtdGltaW5nLmh0bWwiOnsiZXhwZWN0ZWQi
OiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIndpbmRvdy1w
cm9wZXJ0aWVzLXBlcmZvcm1hbmNlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1
YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIndpbmRvdy1vcGVuLXNlbGYtZGlzYWxsb3ct
Y2xvc2UuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCBDUkFTSCIsImFjdHVhbCI6IlBB
U1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sIlJhbmdlIjp7ImNvbXBhcmVCb3VuZGFyeVBvaW50cy1j
b21wYXJlSG93LWV4Y2VwdGlvbi5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3Rl
ZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJNdXRhdGlvbk9i
c2VydmVyIjp7ImVuZC1vZi10YXNrLWRlbGl2ZXJ5Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwi
YWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fSwiSFRNTEFuY2hvckVsZW1lbnQiOnsi
YW5jaG9yLW5vZG93bmxvYWQtc2V0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoi
VEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJhbmNob3ItZG93bmxvYWQuaHRtbCI6eyJleHBlY3Rl
ZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJuYXZpZ2F0b3It
ZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQi
OiJQQVNTIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJob3Jpem9udGFsLXNj
cm9sbGJhci1pbi1ydGwuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJQQVNTIiwi
aGFzX3N0ZGVyciI6dHJ1ZX0sIkhUTUxNZXRlckVsZW1lbnQiOnsibWV0ZXItb3B0aW11bXMuaHRt
bCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
Im1ldGVyLWVsZW1lbnQuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwi
aGFzX3N0ZGVyciI6dHJ1ZX0sIm1ldGVyLWFwcGVhcmFuY2VzLWNhcGFjaXR5Lmh0bWwiOnsiZXhw
ZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJtZXRlci1z
dHlsZXMuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX0sIm1ldGVyLWVsZW1lbnQtcmVwYWludC1vbi11cGRhdGUtdmFsdWUuaHRtbCI6eyJl
eHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm1ldGVy
LWJvdW5kYXJ5LXZhbHVlcy5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQi
LCJoYXNfc3RkZXJyIjp0cnVlfSwibWV0ZXItYXBwZWFyYW5jZXMtcmF0aW5nLXJlbGV2YW5jeS5o
dG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVl
fX0sImdjLWF0dHJpYnV0ZS1ub2RlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1
YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJiYWNrZ3JvdW5kcyI6eyJiYWNrZ3JvdW5k
LW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1
YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFn
ZV9kaWZmX3BlcmNlbnQiOjAuMDF9LCJoaWRwaS1iaXRtYXAtYmFja2dyb3VuZC1vbi1zdWJwaXhl
bC1wb3NpdGlvbi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1Mi
LCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX19LCJyZXBsYWNlZCI6eyJw
cmVmZXJyZWQtd2lkdGhzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQ
QVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInJlcGxhY2VkLWJyZWFraW5nLmh0bWwiOnsiZXhwZWN0
ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJib3JkZXItcmFk
aXVzLWNsaXAuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJo
YXNfc3RkZXJyIjp0cnVlfSwibm8tZm9jdXMtcmluZy1lbWJlZC5odG1sIjp7InJlcG9ydCI6IlJF
R1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJUSU1FT1VUIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX0sImZyYW1lLXJlbW92ZWQtZHVyaW5nLXJlc2l6ZS1zbWFsbGVyLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIENSQVNIIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJp
bnZhbGlkLW9iamVjdC13aXRoLWZhbGxiYWNrLmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIs
ImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibm8t
Zm9jdXMtcmluZy1vYmplY3QuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQi
OiJQQVNTIiwiYWN0dWFsIjoiVElNRU9VVCIsImhhc19zdGRlcnIiOnRydWV9fSwiY3NzMy10ZXh0
Ijp7ImNzczMtdGV4dC1kZWNvcmF0aW9uIjp7InRleHQtZGVjb3JhdGlvbi1za2lwIjp7InRleHQt
ZGVjb3JhdGlvbi1za2lwLWluay1pbmhlcml0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFj
dHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImlt
YWdlX2RpZmZfcGVyY2VudCI6MC4wMX19LCJuby1nYXAtYmV0d2Vlbi10d28tcm91bmRlZC10ZXh0
Ym94ZXMuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3Rk
ZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAx
fX19LCJibG9jayI6eyJmbG9hdCI6eyIwMTYuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1
YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJwb3NpdGlvbmluZyI6eyJmaXhlZC1jb250
YWluZXItd2l0aC1yZWxhdGl2ZS1wYXJlbnQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0Ui
LCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19
fSwiaW5zaWRlLWlubGluZXMiOnsib3BhY2l0eS1vbi1pbmxpbmUuaHRtbCI6eyJleHBlY3RlZCI6
IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUi
OlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjoyLjE0fX19LCJoaXN0b3J5Ijp7InBhZ2UtY2Fj
aGUtd2ViZGF0YWJhc2UtcGVuZGluZy10cmFuc2FjdGlvbi5odG1sIjp7ImV4cGVjdGVkIjoiUEFT
UyBUSU1FT1VUIiwiYWN0dWFsIjoiVElNRU9VVCIsImhhc19zdGRlcnIiOnRydWV9LCJoaXN0b3J5
LWJhY2std2hpbGUtcGRmLWluLXBhZ2VjYWNoZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFH
RSBUSU1FT1VUIENSQVNIIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0
ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjg0fX19fSwic2tpcHBlZCI6
MTM3MiwibnVtX3JlZ3Jlc3Npb25zIjoxOCwib3RoZXJfY3Jhc2hlcyI6eyJEdW1wUmVuZGVyVHJl
ZS02MjYyNSI6e30sIkR1bXBSZW5kZXJUcmVlLTYzMjM0Ijp7fSwiRHVtcFJlbmRlclRyZWUtNjMy
MDkiOnt9LCJEdW1wUmVuZGVyVHJlZS02MzEzNSI6e319LCJpbnRlcnJ1cHRlZCI6ZmFsc2UsIm51
bV9taXNzaW5nIjowLCJsYXlvdXRfdGVzdHNfZGlyIjoiL1VzZXJzL21sYW0vc3JjL3dlYmtpdC9P
cGVuU291cmNlL0xheW91dFRlc3RzIiwidmVyc2lvbiI6NCwibnVtX3Bhc3NlcyI6MTI0ODAsInBp
eGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJkYXRlIjoiMDQ6MTNQTSBvbiBKYW51YXJ5IDI3LCAy
MDIxIiwiaGFzX3ByZXR0eV9wYXRjaCI6dHJ1ZSwiZml4YWJsZSI6MTU1NiwibnVtX2ZsYWt5Ijow
LCJ1c2VzX2V4cGVjdGF0aW9uc19maWxlIjp0cnVlfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogTWFudWFsVGVzdHMvcmVzb3VyY2VzL3Rlc3QtcmVzdWx0cy1wYWdlLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTWFudWFsVGVzdHMvcmVzb3VyY2VzL3Rlc3QtcmVzdWx0cy1wYWdlLmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTWFudWFsVGVzdHMvcmVzb3VyY2VzL3Rlc3QtcmVzdWx0cy1w
YWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKworPHN0eWxlPgorYm9keSB7CisgICAgbWFyZ2luOiAwOworICAgIGZvbnQtZmFtaWx5OiBI
ZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CisgICAgZm9udC1zaXplOiAxMXB0OworfQorCitib2R5ID4g
KiB7CisgICAgbWFyZ2luLWxlZnQ6IDRweDsKKyAgICBtYXJnaW4tdG9wOiA0cHg7Cit9CisKK2gx
IHsKKyAgICBmb250LXNpemU6IDE0cHQ7CisgICAgbWFyZ2luLXRvcDogMS41ZW07Cit9CisKK3Ag
eworICAgIG1hcmdpbi1ib3R0b206IDAuM2VtOworfQorCithLmNsaWNrYWJsZSB7CisgICAgY29s
b3I6IGJsdWU7CisgICAgY3Vyc29yOiBwb2ludGVyOworICAgIG1hcmdpbi1sZWZ0OiAwLjJlbTsK
K30KKwordHI6bm90KC5yZXN1bHRzLXJvdykgdGQgeworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7
Cit9CisKK3RyOm5vdCgucmVzdWx0cy1yb3cpIHRkOmZpcnN0LW9mLXR5cGUgeworICAgIHdoaXRl
LXNwYWNlOiBub3JtYWw7Cit9CisKK3RkOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgeworICAgIHRleHQt
dHJhbnNmb3JtOiBsb3dlcmNhc2U7Cit9CisKK3RoLCB0ZCB7CisgICAgcGFkZGluZzogMXB4IDRw
eDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0ZDpudGgtY2hpbGQoMSkgeyAgCisg
ICAgbWluLXdpZHRoOiAzNWVtOworfQorCit0aDplbXB0eSwgdGQ6ZW1wdHkgeworICAgIHBhZGRp
bmc6IDA7Cit9CisKK3RoIHsKKyAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICAgIC1t
b3otdXNlci1zZWxlY3Q6IG5vbmU7Cit9CisKK2R0ID4gc3VwIHsKKyAgICB2ZXJ0aWNhbC1hbGln
bjp0ZXh0LXRvcDsKKyAgICBmb250LXNpemU6NzUlOworfQorCitzdXAgPiBhIHsKKyAgICB0ZXh0
LWRlY29yYXRpb246IG5vbmU7Cit9CisKKy5jb250ZW50LWNvbnRhaW5lciB7CisgICAgbWluLWhl
aWdodDogMDsKK30KKworLm5vdGUgeworICAgIGNvbG9yOiBncmF5OworICAgIGZvbnQtc2l6ZTog
c21hbGxlcjsKK30KKworLnJlc3VsdHMtcm93IHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0
ZTsKK30KKworLnJlc3VsdHMtcm93IGlmcmFtZSwgLnJlc3VsdHMtcm93IGltZyB7CisgICAgd2lk
dGg6IDgwMHB4OworICAgIGhlaWdodDogNjAwcHg7Cit9CisKKy5yZXN1bHRzLXJvd1tkYXRhLWV4
cGFuZGVkPSJmYWxzZSJdIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisjdG9vbGJhciB7Cisg
ICAgcG9zaXRpb246IGZpeGVkOworICAgIHRvcDogMnB4OworICAgIHJpZ2h0OiAycHg7CisgICAg
dGV4dC1hbGlnbjogcmlnaHQ7Cit9CisKKy5mbG9hdGluZy1wYW5lbCB7CisgICAgcGFkZGluZzog
NnB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKKyAg
ICBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXI7CisgICAgYm9yZGVyLXJhZGl1czogNHB4OworfQor
CisuZXhwYW5kLWJ1dHRvbiB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgd2lk
dGg6IDExcHg7CisgICAgaGVpZ2h0OiAxMnB4OworICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7
CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIG1hcmdpbjogMCAzcHggMCAwOworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBjdXJzb3I6IGRlZmF1bHQ7Cit9CisKKy5jdXJyZW50
IHsKKyAgICBjb2xvcjogcmVkOworfQorCisuY3VycmVudCAuZXhwYW5kLWJ1dHRvbiB7CisgICAg
Ym9yZGVyLWNvbG9yOiByZWQ7Cit9CisKKy5leHBhbmQtYnV0dG9uLXRleHQgeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IC0wLjNlbTsKKyAgICBsZWZ0OiAxcHg7Cit9CisKK3Ri
b2R5IC5mbGFnIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCit0Ym9keS5mbGFnZ2VkIC5mbGFn
IHsKKyAgICBkaXNwbGF5OiBpbmxpbmU7Cit9CisKKy5zdG9wcGVkLXJ1bm5pbmctZWFybHktbWVz
c2FnZSB7CisgICAgYm9yZGVyOiAzcHggc29saWQgI2QwMDsKKyAgICBmb250LXdlaWdodDogYm9s
ZDsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgcGFkZGluZzogM3B4OworfQorCisu
cmVzdWx0LWNvbnRhaW5lciB7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIGJvcmRl
cjogMXB4IHNvbGlkIGdyYXk7CisgICAgbWFyZ2luOiA0cHg7Cit9CisKKy5yZXN1bHQtY29udGFp
bmVyIGlmcmFtZSwgLnJlc3VsdC1jb250YWluZXIgaW1nIHsKKyAgICBib3JkZXI6IDA7CisgICAg
dmVydGljYWwtYWxpZ246IHRvcDsKK30KKworLmxlYWtzID4gdGFibGUgeworICAgIG1hcmdpbjog
NHB4OworfQorLmxlYWtzID4gdGQgeworICAgIHBhZGRpbmctbGVmdDogMjBweDsKK30KKworI29w
dGlvbnMgeworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQorCisjb3B0aW9ucy1tZW51
IHsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5OworICAgIGJvcmRlci1yYWRpdXM6IDRweDsK
KyAgICBtYXJnaW4tdG9wOiAxcHg7CisgICAgcGFkZGluZzogMnB4IDRweDsKKyAgICBib3gtc2hh
ZG93OiAycHggMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuNik7CisgICAgdHJhbnNpdGlvbjogb3Bh
Y2l0eSAuMnM7CisgICAgdGV4dC1hbGlnbjogbGVmdDsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgcmlnaHQ6IDRweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKworI29w
dGlvbnMtbWVudSBsYWJlbCB7CisgICAgZGlzcGxheTogYmxvY2s7Cit9CisKKy5oaWRkZW4tbWVu
dSB7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgICAgb3BhY2l0eTogMDsKK30KKworLmxh
YmVsIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDNweDsKKyAgICBmb250LXdlaWdodDogYm9sZDsKKyAg
ICBmb250LXNpemU6IHNtYWxsOworICAgIGJhY2tncm91bmQtY29sb3I6IHNpbHZlcjsKK30KKwor
LnBpeGVsLXpvb20tY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgdG9wOiAw
OworICAgIGxlZnQ6IDA7CisgICAgd2lkdGg6IDk2JTsKKyAgICBtYXJnaW46IDEwcHg7CisgICAg
cGFkZGluZzogMTBweDsKKyAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKKyAgICBkaXNwbGF5OiAt
bW96LWJveDsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBzaWx2ZXI7CisgICAgYm9yZGVyLXJhZGl1czogMjBweDsKKyAgICBib3JkZXI6IDFweCBzb2xp
ZCBncmF5OworICAgIGJveC1zaGFkb3c6IDAgMCA1cHggcmdiYSgwLCAwLCAwLCAwLjc1KTsKK30K
KworLnBpeGVsLXpvb20tY29udGFpbmVyID4gKiB7CisgICAgLXdlYmtpdC1ib3gtZmxleDogMTsK
KyAgICAtbW96LWJveC1mbGV4OiAxOworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAg
IG1hcmdpbjogNHB4OworICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgYmFja2dyb3VuZC1jb2xv
cjogd2hpdGU7Cit9CisKKy5waXhlbC16b29tLWNvbnRhaW5lciAuc2NhbGVkLWltYWdlLWNvbnRh
aW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIG92ZXJmbG93OiBoaWRkZW47Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiA0MDBweDsKK30KKworLnNjYWxlZC1pbWFnZS1j
b250YWluZXIgPiBpbWcgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7Cisg
ICAgbGVmdDogMDsKKyAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0aW1pemUtY29udHJh
c3Q7Cit9CisKKyNmbGFnZ2VkLXRlc3QtY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogZml4ZWQ7
CisgICAgYm90dG9tOiA0cHg7CisgICAgcmlnaHQ6IDRweDsKKyAgICB3aWR0aDogNTAlOworICAg
IG1pbi13aWR0aDogNDAwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwg
MjU1LCAwLjc1KTsKK30KKworI2ZsYWdnZWQtdGVzdC1jb250YWluZXIgPiBoMiB7CisgICAgbWFy
Z2luOiAwIDAgNHB4IDA7Cit9CisKKyNmbGFnZ2VkLXRlc3RzIHsKKyAgICBwYWRkaW5nOiAwIDVw
eDsKKyAgICBtYXJnaW46IDA7CisgICAgaGVpZ2h0OiA3ZW07CisgICAgb3ZlcmZsb3cteTogc2Ny
b2xsOworfQorPC9zdHlsZT4KKzxzdHlsZSBpZD0idW5leHBlY3RlZC1zdHlsZSI+PC9zdHlsZT4K
KworPHNjcmlwdD4KKworY2xhc3MgVXRpbHMKK3sKKyAgICBzdGF0aWMgbWF0Y2hlc1NlbGVjdG9y
KG5vZGUsIHNlbGVjdG9yKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUubWF0Y2hlcykKKyAgICAg
ICAgICAgIHJldHVybiBub2RlLm1hdGNoZXMoc2VsZWN0b3IpOworCisgICAgICAgIGlmIChub2Rl
LndlYmtpdE1hdGNoZXNTZWxlY3RvcikKKyAgICAgICAgICAgIHJldHVybiBub2RlLndlYmtpdE1h
dGNoZXNTZWxlY3RvcihzZWxlY3Rvcik7CisKKyAgICAgICAgaWYgKG5vZGUubW96TWF0Y2hlc1Nl
bGVjdG9yKQorICAgICAgICAgICAgcmV0dXJuIG5vZGUubW96TWF0Y2hlc1NlbGVjdG9yKHNlbGVj
dG9yKTsKKyAgICB9CisKKyAgICBzdGF0aWMgcGFyZW50T2ZUeXBlKG5vZGUsIHNlbGVjdG9yKQor
ICAgIHsKKyAgICAgICAgd2hpbGUgKG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHsKKyAgICAgICAg
ICAgIGlmIChVdGlscy5tYXRjaGVzU2VsZWN0b3Iobm9kZSwgc2VsZWN0b3IpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAg
IH0KKworICAgIHN0YXRpYyBzdHJpcEV4dGVuc2lvbih0ZXN0TmFtZSkKKyAgICB7CisgICAgICAg
IC8vIFRlbXBvcmFyeSBmaXgsIGFsc28gaW4gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29uc3Ryb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weSwgbGluZSA5NS4KKyAgICAg
ICAgLy8gRklYTUU6IFJlZmFjdG9yIHRvIGF2b2lkIGNvbmZ1c2luZyByZWZlcmVuY2UgdG8gYm90
aCB0ZXN0IGFuZCBwcm9jZXNzIG5hbWVzLgorICAgICAgICBpZiAoVXRpbHMuc3BsaXRFeHRlbnNp
b24odGVzdE5hbWUpWzFdLmxlbmd0aCA+IDUpCisgICAgICAgICAgICByZXR1cm4gdGVzdE5hbWU7
CisgICAgICAgIHJldHVybiBVdGlscy5zcGxpdEV4dGVuc2lvbih0ZXN0TmFtZSlbMF07CisgICAg
fQorCisgICAgc3RhdGljIHNwbGl0RXh0ZW5zaW9uKHRlc3ROYW1lKQorICAgIHsKKyAgICAgICAg
bGV0IGluZGV4ID0gdGVzdE5hbWUubGFzdEluZGV4T2YoJy4nKTsKKyAgICAgICAgaWYgKGluZGV4
ID09IC0xKSB7CisgICAgICAgICAgICByZXR1cm4gW3Rlc3ROYW1lLCAnJ107CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIFt0ZXN0TmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpLCB0ZXN0TmFtZS5z
dWJzdHJpbmcoaW5kZXggKyAxKV07CisgICAgfQorCisgICAgc3RhdGljIGZvckVhY2gobm9kZUxp
c3QsIGhhbmRsZXIpCisgICAgeworICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxs
KG5vZGVMaXN0LCBoYW5kbGVyKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdG9BcnJheShub2RlTGlz
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChub2Rl
TGlzdCk7CisgICAgfQorCisgICAgc3RhdGljIHRyaW0oc3RyaW5nKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0cmluZy5yZXBsYWNlKC9eW1xzXHhhMF0rfFtcc1x4YTBdKyQvZywgJycpOworICAg
IH0KKworICAgIHN0YXRpYyBhc3luYyhmdW5jLCBhcmdzKQorICAgIHsKKyAgICAgICAgc2V0VGlt
ZW91dCgoKSA9PiB7IGZ1bmMuYXBwbHkobnVsbCwgYXJncyk7IH0sIDUwKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYXBwZW5kSFRNTChub2RlLCBodG1sKQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUu
aW5zZXJ0QWRqYWNlbnRIVE1MKQorICAgICAgICAgICAgbm9kZS5pbnNlcnRBZGphY2VudEhUTUwo
J2JlZm9yZUVuZCcsIGh0bWwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBub2RlLmlubmVy
SFRNTCArPSBodG1sOworICAgIH19OworCitjbGFzcyBUZXN0UmVzdWx0Cit7CisgICAgY29uc3Ry
dWN0b3IoaW5mbywgbmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAg
ICAgIHRoaXMuaW5mbyA9IGluZm87IC8vIEZJWE1FOiBtYWtlIHRoaXMgcHJpdmF0ZS4KKyAgICB9
CisKKyAgICBpc0ZhaWx1cmVFeHBlY3RlZCgpCisgICAgeworICAgICAgICBsZXQgYWN0dWFsID0g
dGhpcy5pbmZvLmFjdHVhbDsgICAgCisgICAgICAgIGxldCBleHBlY3RlZCA9IHRoaXMuaW5mby5l
eHBlY3RlZCB8fCAnUEFTUyc7CisKKyAgICAgICAgaWYgKGFjdHVhbCAhPSAnU0tJUCcpIHsKKyAg
ICAgICAgICAgIGxldCBleHBlY3RlZEFycmF5ID0gZXhwZWN0ZWQuc3BsaXQoJyAnKTsKKyAgICAg
ICAgICAgIGxldCBhY3R1YWxBcnJheSA9IGFjdHVhbC5zcGxpdCgnICcpOworICAgICAgICAgICAg
Zm9yIChsZXQgYWN0dWFsVmFsdWUgb2YgYWN0dWFsQXJyYXkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoZXhwZWN0ZWRBcnJheS5pbmRleE9mKGFjdHVhbFZhbHVlKSA9PSAtMSAmJiAoZXhwZWN0ZWRB
cnJheS5pbmRleE9mKCdGQUlMJykgPT0gLTEgfHwgKGFjdHVhbFZhbHVlICE9ICdURVhUJyAmJiBh
Y3R1YWxWYWx1ZSAhPSAnSU1BR0UrVEVYVCcgJiYgYWN0dWFsVmFsdWUgIT0gJ0FVRElPJykpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIGlzTWlzc2luZ0FsbFJl
c3VsdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5mby5hY3R1YWwgPT0gJ01JU1NJ
TkcnOworICAgIH0KKyAgICAKKyAgICBoYXNNaXNzaW5nUmVzdWx0KCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLmluZm8uYWN0dWFsLmluZGV4T2YoJ01JU1NJTkcnKSAhPSAtMTsKKyAgICB9
CisgICAgCisgICAgaXNGbGFrZXkocGl4ZWxUZXN0c0VuYWJsZWQpCisgICAgeworICAgICAgICBs
ZXQgYWN0dWFsVG9rZW5zID0gdGhpcy5pbmZvLmFjdHVhbC5zcGxpdCgnICcpOworICAgICAgICBs
ZXQgcGFzc2VkV2l0aEltYWdlT25seUZhaWx1cmVJblJldHJ5ID0gYWN0dWFsVG9rZW5zWzBdID09
ICdURVhUJyAmJiBhY3R1YWxUb2tlbnNbMV0gPT0gJ0lNQUdFJzsKKyAgICAgICAgaWYgKGFjdHVh
bFRva2Vuc1sxXSAmJiB0aGlzLmluZm8uYWN0dWFsLmluZGV4T2YoJ1BBU1MnKSAhPSAtMSB8fCAo
IXBpeGVsVGVzdHNFbmFibGVkICYmIHBhc3NlZFdpdGhJbWFnZU9ubHlGYWlsdXJlSW5SZXRyeSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgaXNQYXNzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
LmluZm8uYWN0dWFsID09ICdQQVNTJzsKKyAgICB9CisKKyAgICBpc1RleHRGYWlsdXJlKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLmluZm8uYWN0dWFsLmluZGV4T2YoJ1RFWFQnKSAhPSAt
MTsKKyAgICB9CisKKyAgICBpc0ltYWdlRmFpbHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5pbmZvLmFjdHVhbC5pbmRleE9mKCdJTUFHRScpICE9IC0xOworICAgIH0KKworICAgIGlz
QXVkaW9GYWlsdXJlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmluZm8uYWN0dWFsLmlu
ZGV4T2YoJ0FVRElPJykgIT0gLTE7CisgICAgfQorCisgICAgaGFzTGVhaygpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5pbmZvLmFjdHVhbC5pbmRleE9mKCdMRUFLJykgIT0gLTE7CisgICAg
fQorCisgICAgaXNDcmFzaCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmFjdHVh
bCA9PSAnQ1JBU0gnOworICAgIH0KKyAgICAKKyAgICBpc1RpbWVvdXQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuaW5mby5hY3R1YWwgPT0gJ1RJTUVPVVQnOworICAgIH0KKyAgICAKKyAg
ICBpc1VuZXhwZWN0ZWRQYXNzKHBpeGVsVGVzdHNFbmFibGVkKQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuaW5mby5hY3R1YWwgPT0gJ1BBU1MnICYmIHRoaXMuaW5mby5leHBlY3RlZCAhPSAnUEFT
UycpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmluZm8uZXhwZWN0ZWQgIT0gJ0lNQUdFJyB8fCAo
cGl4ZWxUZXN0c0VuYWJsZWQgfHwgdGhpcy5pc1JlZlRlc3QoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgaXNSZWZUZXN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRo
aXMuaW5mby5yZWZ0ZXN0X3R5cGU7CisgICAgfQorCisgICAgaXNNaXNtYXRjaFJlZlRlc3QoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNSZWZUZXN0KCkgJiYgdGhpcy5pbmZvLnJlZnRl
c3RfdHlwZS5pbmRleE9mKCchPScpICE9IC0xOworICAgIH0KKworICAgIGlzTWF0Y2hSZWZUZXN0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmlzUmVmVGVzdCgpICYmIHRoaXMuaW5mby5y
ZWZ0ZXN0X3R5cGUuaW5kZXhPZignPT0nKSAhPSAtMTsKKyAgICB9CisgICAgCisgICAgaXNNaXNz
aW5nVGV4dCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmlzX21pc3NpbmdfdGV4
dDsKKyAgICB9CisKKyAgICBpc01pc3NpbmdJbWFnZSgpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5pbmZvLmlzX21pc3NpbmdfaW1hZ2U7CisgICAgfQorCisgICAgaXNNaXNzaW5nQXVkaW8o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5mby5pc19taXNzaW5nX2F1ZGlvOworICAg
IH0KKyAgICAKKyAgICBoYXNTdGRFcnIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5m
by5oYXNfc3RkZXJyOworICAgIH0KK307CisKK2NsYXNzIFRlc3RSZXN1bHRzCit7CisgICAgY29u
c3RydWN0b3IocmVzdWx0cykKKyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3VsdHMgPSByZXN1bHRz
OworCisgICAgICAgIHRoaXMuY3Jhc2hUZXN0cyA9IFtdOworICAgICAgICB0aGlzLmNyYXNoT3Ro
ZXIgPSBbXTsKKyAgICAgICAgdGhpcy5taXNzaW5nUmVzdWx0cyA9IFtdOworICAgICAgICB0aGlz
LmZhaWxpbmdUZXN0cyA9IFtdOworICAgICAgICB0aGlzLnRlc3RzV2l0aFN0ZGVyciA9IFtdOwor
ICAgICAgICB0aGlzLnRpbWVvdXRUZXN0cyA9IFtdOworICAgICAgICB0aGlzLnVuZXhwZWN0ZWRQ
YXNzVGVzdHMgPSBbXTsKKyAgICAgICAgdGhpcy5mbGFreVBhc3NUZXN0cyA9IFtdOworCisgICAg
ICAgIHRoaXMuaGFzSHR0cFRlc3RzID0gZmFsc2U7CisgICAgICAgIHRoaXMuaGFzSW1hZ2VGYWls
dXJlcyA9IGZhbHNlOworICAgICAgICB0aGlzLmhhc1RleHRGYWlsdXJlcyA9IGZhbHNlOworCisg
ICAgICAgIHRoaXMuX3Rlc3RzQnlOYW1lID0gbmV3IE1hcDsKKworICAgICAgICB0aGlzLl9mb3JF
YWNoVGVzdCh0aGlzLl9yZXN1bHRzLnRlc3RzLCAnJyk7CisgICAgICAgIHRoaXMuX2Zvck90aGVy
Q3Jhc2hlcyh0aGlzLl9yZXN1bHRzLm90aGVyX2NyYXNoZXMpOworICAgIH0KKyAgICAKKyAgICBk
YXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHRzLmRhdGU7CisgICAgfQor
CisgICAgbGF5b3V0VGVzdHNEaXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3Vs
dHMubGF5b3V0X3Rlc3RzX2RpcjsKKyAgICB9CisgICAgCisgICAgdXNlc0V4cGVjdGF0aW9uc0Zp
bGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHMudXNlc19leHBlY3RhdGlv
bnNfZmlsZTsKKyAgICB9CisgICAgCisgICAgcmVzdWx0Rm9yVGVzdCh0ZXN0TmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9yZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXTsKKyAgICB9Cisg
ICAgCisgICAgd2FzSW50ZXJydXB0ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c3VsdHMuaW50ZXJydXB0ZWQ7CisgICAgfQorCisgICAgaGFzUHJldHR5UGF0Y2goKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHMuaGFzX3ByZXR0eV9wYXRjaDsKKyAgICB9Cisg
ICAgCisgICAgaGFzV0RpZmYoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHMu
aGFzX3dkaWZmOworICAgIH0KKyAgICAKKyAgICB0ZXN0V2l0aE5hbWUodGVzdE5hbWUpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fdGVzdHNCeU5hbWUuZ2V0KHRlc3ROYW1lKTsKKyAgICB9
CisKKyAgICBfcHJvY2Vzc1Jlc3VsdEZvclRlc3QodGVzdFJlc3VsdCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3Rlc3RzQnlOYW1lLnNldCh0ZXN0UmVzdWx0Lm5hbWUsIHRlc3RSZXN1bHQpOworCisg
ICAgICAgIGxldCB0ZXN0ID0gdGVzdFJlc3VsdC5uYW1lOworICAgICAgICBpZiAodGVzdFJlc3Vs
dC5oYXNTdGRFcnIoKSkKKyAgICAgICAgICAgIHRoaXMudGVzdHNXaXRoU3RkZXJyLnB1c2godGVz
dFJlc3VsdCk7CisKKyAgICAgICAgdGhpcy5oYXNIdHRwVGVzdHMgfD0gdGVzdC5pbmRleE9mKCdo
dHRwLycpID09IDA7CisKKyAgICAgICAgaWYgKHRoaXMudXNlc0V4cGVjdGF0aW9uc0ZpbGUoKSkK
KyAgICAgICAgICAgIHRlc3RSZXN1bHQuaXNFeHBlY3RlZCA9IHRlc3RSZXN1bHQuaXNGYWlsdXJl
RXhwZWN0ZWQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzVGV4dEZhaWx1
cmUoKSkKKyAgICAgICAgICAgIHRoaXMuaGFzVGV4dEZhaWx1cmVzID0gdHJ1ZTsKKworICAgICAg
ICBpZiAodGVzdFJlc3VsdC5pc0ltYWdlRmFpbHVyZSgpKQorICAgICAgICAgICAgdGhpcy5oYXNJ
bWFnZUZhaWx1cmVzID0gdHJ1ZTsKKworICAgICAgICBpZiAodGVzdFJlc3VsdC5pc01pc3NpbmdB
bGxSZXN1bHRzKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHN1cmUgdGhhdCBuZXct
cnVuLXdlYmtpdC10ZXN0cyBzcGl0cyBvdXQgYW4gLWFjdHVhbC50eHQgZmlsZSBmb3IgdGVzdHMg
d2l0aCBNSVNTSU5HIHJlc3VsdHMuCisgICAgICAgICAgICB0aGlzLm1pc3NpbmdSZXN1bHRzLnB1
c2godGVzdFJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAodGVzdFJlc3VsdC5pc0ZsYWtleSh0aGlzLl9yZXN1bHRzLnBpeGVsX3Rlc3RzX2VuYWJs
ZWQpKSB7CisgICAgICAgICAgICB0aGlzLmZsYWt5UGFzc1Rlc3RzLnB1c2godGVzdFJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodGVzdFJlc3Vs
dC5pc1Bhc3MoKSkgeworICAgICAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNVbmV4cGVjdGVkUGFz
cyh0aGlzLl9yZXN1bHRzLnBpeGVsX3Rlc3RzX2VuYWJsZWQpKQorICAgICAgICAgICAgICAgIHRo
aXMudW5leHBlY3RlZFBhc3NUZXN0cy5wdXNoKHRlc3RSZXN1bHQpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNDcmFzaCgpKSB7Cisg
ICAgICAgICAgICB0aGlzLmNyYXNoVGVzdHMucHVzaCh0ZXN0UmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzVGltZW91dCgp
KSB7CisgICAgICAgICAgICB0aGlzLnRpbWVvdXRUZXN0cy5wdXNoKHRlc3RSZXN1bHQpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgCisgICAgICAgIHRoaXMuZmFpbGluZ1Rl
c3RzLnB1c2godGVzdFJlc3VsdCk7CisgICAgfQorICAgIAorICAgIF9mb3JFYWNoVGVzdCh0cmVl
LCBwcmVmaXgpCisgICAgeworICAgICAgICBmb3IgKGxldCBrZXkgaW4gdHJlZSkgeworICAgICAg
ICAgICAgbGV0IG5ld1ByZWZpeCA9IHByZWZpeCA/IChwcmVmaXggKyAnLycgKyBrZXkpIDoga2V5
OworICAgICAgICAgICAgaWYgKCdhY3R1YWwnIGluIHRyZWVba2V5XSkgeworICAgICAgICAgICAg
ICAgIGxldCB0ZXN0T2JqZWN0ID0gbmV3IFRlc3RSZXN1bHQodHJlZVtrZXldLCBuZXdQcmVmaXgp
OworICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NSZXN1bHRGb3JUZXN0KHRlc3RPYmplY3Qp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5fZm9yRWFjaFRlc3Qo
dHJlZVtrZXldLCBuZXdQcmVmaXgpOworICAgICAgICB9CisgICAgfQorCisgICAgX2Zvck90aGVy
Q3Jhc2hlcyh0cmVlKQorICAgIHsKKyAgICAgICAgZm9yIChsZXQga2V5IGluIHRyZWUpIHsKKyAg
ICAgICAgICAgIGxldCB0ZXN0T2JqZWN0ID0gbmV3IFRlc3RSZXN1bHQodHJlZVtrZXldLCBrZXkp
OworICAgICAgICAgICAgdGhpcy5jcmFzaE90aGVyLnB1c2godGVzdE9iamVjdCk7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIHNvcnRCeU5hbWUodGVzdHMpCisgICAgeworICAg
ICAgICB0ZXN0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLm5hbWUubG9jYWxlQ29t
cGFyZShiLm5hbWUpIH0pOworICAgIH0KKworICAgIHN0YXRpYyBoYXNVbmV4cGVjdGVkUmVzdWx0
KHRlc3RzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRlc3RzLnNvbWUoZnVuY3Rpb24gKHRlc3Qp
IHsgcmV0dXJuICF0ZXN0LmlzRXhwZWN0ZWQ7IH0pOworICAgIH0KK307CisKK2NsYXNzIFRlc3RS
ZXN1bHRzQ29udHJvbGxlcgoreyAgICAgICAgCisgICAgY29uc3RydWN0b3IoY29udGFpbmVyRWxl
bWVudCwgdGVzdFJlc3VsdHMpCisgICAgeworICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50OworICAgICAgICB0aGlzLnRlc3RSZXN1bHRzID0gdGVzdFJlc3Vs
dHM7CisKKyAgICAgICAgdGhpcy5zaG91bGRUb2dnbGVJbWFnZXMgPSB0cnVlOworICAgICAgICB0
aGlzLl90b2dnbGluZ0ltYWdlSW50ZXJ2YWwgPSBudWxsOworICAgICAgICAKKyAgICAgICAgdGhp
cy5fdXBkYXRlUGFnZVRpdGxlKCk7CisKKyAgICAgICAgdGhpcy5idWlsZFJlc3VsdHNUYWJsZXMo
KTsKKyAgICAgICAgdGhpcy5oaWRlTm9uQXBwbGljYWJsZVVJKCk7CisgICAgICAgIHRoaXMuc2V0
dXBTb3J0aW5nKCk7CisgICAgICAgIHRoaXMuc2V0dXBPcHRpb25zKCk7CisgICAgfQorICAgIAor
ICAgIGJ1aWxkUmVzdWx0c1RhYmxlcygpCisgICAgeworICAgICAgICBpZiAodGhpcy50ZXN0UmVz
dWx0cy53YXNJbnRlcnJ1cHRlZCgpKSB7CisgICAgICAgICAgICBsZXQgaW50ZXJydXB0aW9uTWVz
c2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICAgICAgICAgIGludGVycnVw
dGlvbk1lc3NhZ2UudGV4dENvbnRlbnQgPSAnVGVzdGluZyBleGl0ZWQgZWFybHknOworICAgICAg
ICAgICAgaW50ZXJydXB0aW9uTWVzc2FnZS5jbGFzc0xpc3QuYWRkKCdzdG9wcGVkLXJ1bm5pbmct
ZWFybHktbWVzc2FnZScpOworICAgICAgICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVu
ZENoaWxkKGludGVycnVwdGlvbk1lc3NhZ2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRo
aXMudGVzdFJlc3VsdHMuY3Jhc2hUZXN0cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLmNvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWlsZE9uZVNlY3Rpb24odGhpcy50ZXN0UmVz
dWx0cy5jcmFzaFRlc3RzLCAnY3Jhc2gtdGVzdHMtdGFibGUnKSk7CisKKyAgICAgICAgaWYgKHRo
aXMudGVzdFJlc3VsdHMuY3Jhc2hPdGhlci5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLmNvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWlsZE9uZVNlY3Rpb24odGhpcy50ZXN0UmVz
dWx0cy5jcmFzaE90aGVyLCAnb3RoZXItY3Jhc2gtdGVzdHMtdGFibGUnKSk7CisKKyAgICAgICAg
aWYgKHRoaXMudGVzdFJlc3VsdHMuZmFpbGluZ1Rlc3RzLmxlbmd0aCkKKyAgICAgICAgICAgIHRo
aXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25lU2VjdGlvbih0aGlz
LnRlc3RSZXN1bHRzLmZhaWxpbmdUZXN0cywgJ3Jlc3VsdHMtdGFibGUnKSk7CisKKyAgICAgICAg
aWYgKHRoaXMudGVzdFJlc3VsdHMubWlzc2luZ1Jlc3VsdHMubGVuZ3RoKQorICAgICAgICAgICAg
dGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYnVpbGRPbmVTZWN0aW9uKHRo
aXMudGVzdFJlc3VsdHMubWlzc2luZ1Jlc3VsdHMsICdtaXNzaW5nLXRhYmxlJykpOworCisgICAg
ICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLnRpbWVvdXRUZXN0cy5sZW5ndGgpCisgICAgICAgICAg
ICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWlsZE9uZVNlY3Rpb24o
dGhpcy50ZXN0UmVzdWx0cy50aW1lb3V0VGVzdHMsICd0aW1lb3V0LXRlc3RzLXRhYmxlJykpOwor
CisgICAgICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLnRlc3RzV2l0aFN0ZGVyci5sZW5ndGgpCisg
ICAgICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWlsZE9u
ZVNlY3Rpb24odGhpcy50ZXN0UmVzdWx0cy50ZXN0c1dpdGhTdGRlcnIsICdzdGRlcnItdGFibGUn
KSk7CisKKyAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMuZmxha3lQYXNzVGVzdHMubGVuZ3Ro
KQorICAgICAgICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYnVp
bGRPbmVTZWN0aW9uKHRoaXMudGVzdFJlc3VsdHMuZmxha3lQYXNzVGVzdHMsICdmbGFreS10ZXN0
cy10YWJsZScpKTsKKworICAgICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy51c2VzRXhwZWN0YXRp
b25zRmlsZSgpICYmIHRoaXMudGVzdFJlc3VsdHMudW5leHBlY3RlZFBhc3NUZXN0cy5sZW5ndGgp
CisgICAgICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWls
ZE9uZVNlY3Rpb24odGhpcy50ZXN0UmVzdWx0cy51bmV4cGVjdGVkUGFzc1Rlc3RzLCAncGFzc2Vz
LXRhYmxlJykpOworCisgICAgICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLmhhc0h0dHBUZXN0cykg
eworICAgICAgICAgICAgbGV0IGh0dHBkQWNjZXNzTG9nTGluayA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3AnKTsKKyAgICAgICAgICAgIGh0dHBkQWNjZXNzTG9nTGluay5pbm5lckhUTUwgPSAn
aHR0cGQgYWNjZXNzIGxvZzogPGEgaHJlZj0iYWNjZXNzX2xvZy50eHQiPmFjY2Vzc19sb2cudHh0
PC9hPic7CisKKyAgICAgICAgICAgIGxldCBodHRwZEVycm9yTG9nTGluayA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICAgICAgICAgIGh0dHBkRXJyb3JMb2dMaW5rLmlubmVySFRN
TCA9ICdodHRwZCBlcnJvciBsb2c6IDxhIGhyZWY9ImVycm9yX2xvZy50eHQiPmVycm9yX2xvZy50
eHQ8L2E+JzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50
LmFwcGVuZENoaWxkKGh0dHBkQWNjZXNzTG9nTGluayk7CisgICAgICAgICAgICB0aGlzLmNvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoaHR0cGRFcnJvckxvZ0xpbmspOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB0aGlzLnVwZGF0ZVRlc3RsaXN0Q291bnRzKCk7CisgICAgfQorCisg
ICAgc3RhdGljIHNlY3Rpb25CdWlsZGVyQ2xhc3NGb3JUYWJsZUlEKHRhYmxlSUQpCisgICAgewor
ICAgICAgICBjb25zdCBpZFRvQnVpbGRlckNsYXNzTWFwID0geworICAgICAgICAgICAgJ2NyYXNo
LXRlc3RzLXRhYmxlJyA6IENyYXNoaW5nVGVzdHNTZWN0aW9uQnVpbGRlciwKKyAgICAgICAgICAg
ICdvdGhlci1jcmFzaC10ZXN0cy10YWJsZScgOiBPdGhlckNyYXNoZXNTZWN0aW9uQnVpbGRlciwK
KyAgICAgICAgICAgICdyZXN1bHRzLXRhYmxlJyA6IEZhaWxpbmdUZXN0c1NlY3Rpb25CdWlsZGVy
LAorICAgICAgICAgICAgJ21pc3NpbmctdGFibGUnIDogVGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHNT
ZWN0aW9uQnVpbGRlciwKKyAgICAgICAgICAgICd0aW1lb3V0LXRlc3RzLXRhYmxlJyA6IFRpbWVk
T3V0VGVzdHNTZWN0aW9uQnVpbGRlciwKKyAgICAgICAgICAgICdzdGRlcnItdGFibGUnIDogVGVz
dHNXaXRoU3RkRXJyU2VjdGlvbkJ1aWxkZXIsCisgICAgICAgICAgICAnZmxha3ktdGVzdHMtdGFi
bGUnIDogRmxha3lQYXNzVGVzdHNTZWN0aW9uQnVpbGRlciwKKyAgICAgICAgICAgICdwYXNzZXMt
dGFibGUnIDogVW5leHBlY3RlZFBhc3NUZXN0c1NlY3Rpb25CdWlsZGVyLAorICAgICAgICB9Owor
ICAgICAgICByZXR1cm4gaWRUb0J1aWxkZXJDbGFzc01hcFt0YWJsZUlEXTsKKyAgICB9CisgICAg
CisgICAgc2V0dXBTb3J0aW5nKCkKKyAgICB7CisgICAgICAgIGxldCByZXN1bHRzVGFibGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0cy10YWJsZScpOworICAgICAgICBpZiAoIXJl
c3VsdHNUYWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIC8vIEZJ
WE1FOiBNYWtlIGFsbCB0aGUgdGFibGVzIHNvcnRhYmxlLiBNYXliZSBTZWN0aW9uQnVpbGRlciBz
aG91bGQgcHV0IGEgVGFibGVTb3J0ZXIgb24gZWFjaCB0YWJsZS4KKyAgICAgICAgcmVzdWx0c1Rh
YmxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgVGFibGVTb3J0ZXIuaGFuZGxlQ2xpY2ssIGZh
bHNlKTsKKyAgICAgICAgVGFibGVTb3J0ZXIuc29ydENvbHVtbigwKTsKKyAgICB9CisgICAgCisg
ICAgaGlkZU5vbkFwcGxpY2FibGVVSSgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogZG8gdGhp
cyBhbGwgdGhyb3VnaCBib2R5IGNsYXNzbmFtZXMuCisgICAgICAgIGlmICghdGhpcy50ZXN0UmVz
dWx0cy5oYXNUZXh0RmFpbHVyZXMpIHsKKyAgICAgICAgICAgIGxldCB0ZXh0UmVzdWx0c0hlYWRl
ciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0LXJlc3VsdHMtaGVhZGVyJyk7CisgICAg
ICAgICAgICBpZiAodGV4dFJlc3VsdHNIZWFkZXIpCisgICAgICAgICAgICAgICAgdGV4dFJlc3Vs
dHNIZWFkZXIudGV4dENvbnRlbnQgPSAnJzsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhp
cy50ZXN0UmVzdWx0cy5oYXNJbWFnZUZhaWx1cmVzKSB7CisgICAgICAgICAgICBsZXQgaW1hZ2VS
ZXN1bHRzSGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlLXJlc3VsdHMtaGVh
ZGVyJyk7CisgICAgICAgICAgICBpZiAoaW1hZ2VSZXN1bHRzSGVhZGVyKQorICAgICAgICAgICAg
ICAgIGltYWdlUmVzdWx0c0hlYWRlci50ZXh0Q29udGVudCA9ICcnOworCisgICAgICAgICAgICBV
dGlscy5wYXJlbnRPZlR5cGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvZ2dsZS1pbWFnZXMn
KSwgJ2xhYmVsJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBzZXR1cE9wdGlvbnMoKQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGRvIHRoaXMg
YWxsIHRocm91Z2ggYm9keSBjbGFzc25hbWVzLgorICAgICAgICBpZiAoIXRoaXMudGVzdFJlc3Vs
dHMudXNlc0V4cGVjdGF0aW9uc0ZpbGUoKSkKKyAgICAgICAgICAgIFV0aWxzLnBhcmVudE9mVHlw
ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndW5leHBlY3RlZC1yZXN1bHRzJyksICdsYWJlbCcp
LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgfQorCisgICAgYnVpbGRPbmVTZWN0aW9uKHRl
c3RzLCB0YWJsZUlEKQorICAgIHsKKyAgICAgICAgVGVzdFJlc3VsdHMuc29ydEJ5TmFtZSh0ZXN0
cyk7CisgICAgICAgIAorICAgICAgICBsZXQgc2VjdGlvbkJ1aWxkZXJDbGFzcyA9IFRlc3RSZXN1
bHRzQ29udHJvbGxlci5zZWN0aW9uQnVpbGRlckNsYXNzRm9yVGFibGVJRCh0YWJsZUlEKTsKKyAg
ICAgICAgbGV0IHNlY3Rpb25CdWlsZGVyID0gbmV3IHNlY3Rpb25CdWlsZGVyQ2xhc3ModGVzdHMs
IHRhYmxlSUQsIHRoaXMpOworICAgICAgICByZXR1cm4gc2VjdGlvbkJ1aWxkZXIuYnVpbGQoKTsK
KyAgICB9CisKKyAgICB1cGRhdGVUZXN0bGlzdENvdW50cygpCisgICAgeworICAgICAgICAvLyBG
SVhNRTogZG8gdGhpcyB0aHJvdWdoIHRoZSBkYXRhIG1vZGVsLCBub3QgdGhyb3VnaCB0aGUgRE9N
LgorICAgICAgICBsZXQgb25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMgPSB0aGlzLm9ubHlTaG93
VW5leHBlY3RlZEZhaWx1cmVzKCk7CisgICAgICAgIFV0aWxzLmZvckVhY2goZG9jdW1lbnQucXVl
cnlTZWxlY3RvckFsbCgnLnRlc3QtbGlzdC1jb3VudCcpLCBjb3VudCA9PiB7CisgICAgICAgICAg
ICBsZXQgY29udGFpbmVyID0gVXRpbHMucGFyZW50T2ZUeXBlKGNvdW50LCAnc2VjdGlvbicpOwor
ICAgICAgICAgICAgbGV0IHRlc3RDb250YWluZXJzOworICAgICAgICAgICAgaWYgKG9ubHlTaG93
VW5leHBlY3RlZEZhaWx1cmVzKQorICAgICAgICAgICAgICAgIHRlc3RDb250YWluZXJzID0gY29u
dGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5Om5vdCguZXhwZWN0ZWQpJyk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdENvbnRhaW5lcnMgPSBjb250YWluZXIucXVl
cnlTZWxlY3RvckFsbCgndGJvZHknKTsKKworICAgICAgICAgICAgY291bnQudGV4dENvbnRlbnQg
PSB0ZXN0Q29udGFpbmVycy5sZW5ndGg7CisgICAgICAgIH0pCisgICAgfQorICAgIAorICAgIGZs
YWdBbGwoaGVhZGVyTGluaykKKyAgICB7CisgICAgICAgIGxldCB0ZXN0cyA9IHRoaXMudmlzaWJs
ZVRlc3RzKFV0aWxzLnBhcmVudE9mVHlwZShoZWFkZXJMaW5rLCAnc2VjdGlvbicpKTsKKyAgICAg
ICAgVXRpbHMuZm9yRWFjaCh0ZXN0cywgdGVzdHMgPT4geworICAgICAgICAgICAgbGV0IHNob3Vs
ZEZsYWcgPSB0cnVlOworICAgICAgICAgICAgdGVzdE5hdmlnYXRvci5mbGFnVGVzdCh0ZXN0cywg
c2hvdWxkRmxhZyk7CisgICAgICAgIH0pCisgICAgfQorCisgICAgdW5mbGFnKGZsYWcpCisgICAg
eworICAgICAgICBjb25zdCBzaG91bGRGbGFnID0gZmFsc2U7CisgICAgICAgIHRlc3ROYXZpZ2F0
b3IuZmxhZ1Rlc3QoVXRpbHMucGFyZW50T2ZUeXBlKGZsYWcsICd0Ym9keScpLCBzaG91bGRGbGFn
KTsKKyAgICB9CisKKyAgICB2aXNpYmxlVGVzdHMob3B0X2NvbnRhaW5lcikKKyAgICB7CisgICAg
ICAgIGxldCBjb250YWluZXIgPSBvcHRfY29udGFpbmVyIHx8IGRvY3VtZW50OworICAgICAgICBp
ZiAodGhpcy5vbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJlcygpKQorICAgICAgICAgICAgcmV0dXJu
IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keTpub3QoLmV4cGVjdGVkKScpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwo
J3Rib2R5Jyk7CisgICAgfQorCisgICAgLy8gRklYTUU6IHRoaXMgaXMgY29uZnVzaW5nLiBGbGlw
IHRoZSBzZW5zZSBhcm91bmQuCisgICAgb25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1bmV4cGVjdGVkLXJl
c3VsdHMnKS5jaGVja2VkOworICAgIH0KKworICAgIHN0YXRpYyBfdGVzdExpc3RIZWFkZXIodGl0
bGUpCisgICAgeworICAgICAgICBsZXQgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
aDEnKTsKKyAgICAgICAgaGVhZGVyLmlubmVySFRNTCA9IHRpdGxlICsgJyAoPHNwYW4gY2xhc3M9
dGVzdC1saXN0LWNvdW50Pjwvc3Bhbj4pOiA8YSBocmVmPSIjIiBjbGFzcz1mbGFnLWFsbCBvbmNs
aWNrPSJjb250cm9sbGVyLmZsYWdBbGwodGhpcykiPmZsYWcgYWxsPC9hPic7CisgICAgICAgIHJl
dHVybiBoZWFkZXI7CisgICAgfQorCisgICAgdGVzdFRvVVJMKHRlc3RSZXN1bHQsIGxheW91dFRl
c3RzUGF0aCkKKyAgICB7CisgICAgICAgIGNvbnN0IG1hcHBpbmdzID0geworICAgICAgICAgICAg
Imh0dHAvdGVzdHMvc3NsLyI6ICJodHRwczovLzEyNy4wLjAuMTo4NDQzL3NzbC8iLAorICAgICAg
ICAgICAgImh0dHAvdGVzdHMvIjogImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC8iLAorICAgICAgICAg
ICAgImh0dHAvd3B0LyI6ICJodHRwOi8vbG9jYWxob3N0Ojg4MDAvV2ViS2l0LyIsCisgICAgICAg
ICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy8iOiAiaHR0cDovL2xvY2FsaG9z
dDo4ODAwLyIKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGxldCBrZXkgaW4gbWFwcGluZ3Mp
IHsKKyAgICAgICAgICAgIGlmICh0ZXN0UmVzdWx0Lm5hbWUuc3RhcnRzV2l0aChrZXkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nc1trZXldICsgdGVzdFJlc3VsdC5uYW1lLnN1YnN0
cmluZyhrZXkubGVuZ3RoKTsKKworICAgICAgICB9CisgICAgICAgIHJldHVybiAiZmlsZTovLyIg
KyBsYXlvdXRUZXN0c1BhdGggKyAiLyIgKyB0ZXN0UmVzdWx0Lm5hbWU7CisgICAgfQorCisgICAg
bGF5b3V0VGVzdFVSTCh0ZXN0UmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuc2hvdWxk
VXNlVHJhY0xpbmtzKCkpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0c0Jhc2VQ
YXRoKCkgKyB0ZXN0UmVzdWx0Lm5hbWU7CisKKyAgICAgICAgcmV0dXJuIHRoaXMudGVzdFRvVVJM
KHRlc3RSZXN1bHQsIHRoaXMubGF5b3V0VGVzdHNCYXNlUGF0aCgpKTsKKyAgICB9CisKKyAgICBs
YXlvdXRUZXN0c0Jhc2VQYXRoKCkKKyAgICB7CisgICAgICAgIGxldCBiYXNlUGF0aDsKKyAgICAg
ICAgaWYgKHRoaXMuc2hvdWxkVXNlVHJhY0xpbmtzKCkpIHsKKyAgICAgICAgICAgIGxldCByZXZp
c2lvbiA9IHRoaXMudGVzdFJlc3VsdHMucmV2aXNpb247CisgICAgICAgICAgICBiYXNlUGF0aCA9
ICdodHRwOi8vdHJhYy53ZWJraXQub3JnJzsKKyAgICAgICAgICAgIGJhc2VQYXRoICs9IHJldmlz
aW9uID8gKCcvZXhwb3J0LycgKyByZXZpc2lvbikgOiAnL2Jyb3dzZXInOworICAgICAgICAgICAg
YmFzZVBhdGggKz0gJy90cnVuay9MYXlvdXRUZXN0cy8nOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGJhc2VQYXRoID0gdGhpcy50ZXN0UmVzdWx0cy5sYXlvdXRUZXN0c0RpcigpICsgJy8n
OworCisgICAgICAgIHJldHVybiBiYXNlUGF0aDsKKyAgICB9CisKKyAgICBjb252ZXJ0VG9MYXlv
dXRUZXN0QmFzZVJlbGF0aXZlVVJMKGZ1bGxVUkwpCisgICAgeworICAgICAgICBpZiAoZnVsbFVS
TC5zdGFydHNXaXRoKCdmaWxlOi8vJykpIHsKKyAgICAgICAgICAgIGxldCB1cmxQcmVmaXggPSAn
ZmlsZTovLycgKyB0aGlzLmxheW91dFRlc3RzQmFzZVBhdGgoKTsKKyAgICAgICAgICAgIGlmIChm
dWxsVVJMLnN0YXJ0c1dpdGgodXJsUHJlZml4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVs
bFVSTC5zdWJzdHJpbmcodXJsUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiBmdWxsVVJMOworICAgIH0KKworICAgIHNob3VsZFVzZVRyYWNMaW5rcygp
CisgICAgeworICAgICAgICByZXR1cm4gIXRoaXMudGVzdFJlc3VsdHMubGF5b3V0VGVzdHNEaXIo
KSB8fCAhbG9jYXRpb24udG9TdHJpbmcoKS5pbmRleE9mKCdmaWxlOi8vJykgPT0gMDsKKyAgICB9
CisKKyAgICBjaGVja1NlcnZlcklzUnVubmluZyhldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLnNob3VsZFVzZVRyYWNMaW5rcygpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGxldCB1cmwgPSBldmVudC50YXJnZXQuaHJlZjsKKyAgICAgICAgaWYgKHVybC5zdGFydHNXaXRo
KCJmaWxlOi8vIikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKKyAgICAgICAgZmV0Y2godXJsLCB7IG1vZGU6ICJuby1jb3JzIiB9KS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IHVybDsKKyAgICAgICAgfSwg
KCkgPT4geworICAgICAgICAgICAgYWxlcnQoIkhUVFAgc2VydmVyIGRvZXMgbm90IHNlZW0gdG8g
YmUgcnVubmluZywgcGxlYXNlIHVzZSB0aGUgcnVuLXdlYmtpdC1odHRwZCBzY3JpcHQiKTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgdGVzdExpbmsodGVzdFJlc3VsdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAnPGEgY2xhc3M9dGVzdC1saW5rIG9uY2xpY2s9ImNvbnRyb2xsZXIuY2hlY2tT
ZXJ2ZXJJc1J1bm5pbmcoZXZlbnQpIiBocmVmPSInICsgdGhpcy5sYXlvdXRUZXN0VVJMKHRlc3RS
ZXN1bHQpICsgJyI+JyArIHRlc3RSZXN1bHQubmFtZSArICc8L2E+PHNwYW4gY2xhc3M9ZmxhZyBv
bmNsaWNrPSJjb250cm9sbGVyLnVuZmxhZyh0aGlzKSI+IFx1MjY5MTwvc3Bhbj4nOworICAgIH0K
KyAgICAKKyAgICBleHBhbmRCdXR0b25TcGFuKCkKKyAgICB7CisgICAgICAgIHJldHVybiAnPHNw
YW4gY2xhc3M9ZXhwYW5kLWJ1dHRvbiBvbmNsaWNrPSJjb250cm9sbGVyLnRvZ2dsZUV4cGVjdGF0
aW9ucyh0aGlzKSI+PHNwYW4gY2xhc3M9ZXhwYW5kLWJ1dHRvbi10ZXh0Pis8L3NwYW4+PC9zcGFu
Pic7CisgICAgfQorICAgIAorICAgIHN0YXRpYyByZXN1bHRMaW5rKHRlc3RQcmVmaXgsIHN1ZmZp
eCwgY29udGVudHMpCisgICAgeworICAgICAgICByZXR1cm4gJzxhIGNsYXNzPXJlc3VsdC1saW5r
IGhyZWY9IicgKyB0ZXN0UHJlZml4ICsgc3VmZml4ICsgJyIgZGF0YS1wcmVmaXg9IicgKyB0ZXN0
UHJlZml4ICsgJyI+JyArIGNvbnRlbnRzICsgJzwvYT4gJzsKKyAgICB9CisKKyAgICB0ZXh0UmVz
dWx0TGlua3MocHJlZml4KQorICAgIHsKKyAgICAgICAgbGV0IGh0bWwgPSBUZXN0UmVzdWx0c0Nv
bnRyb2xsZXIucmVzdWx0TGluayhwcmVmaXgsICctZXhwZWN0ZWQudHh0JywgJ2V4cGVjdGVkJykg
KworICAgICAgICAgICAgVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsocHJlZml4LCAn
LWFjdHVhbC50eHQnLCAnYWN0dWFsJykgKworICAgICAgICAgICAgVGVzdFJlc3VsdHNDb250cm9s
bGVyLnJlc3VsdExpbmsocHJlZml4LCAnLWRpZmYudHh0JywgJ2RpZmYnKTsKKworICAgICAgICBp
ZiAodGhpcy50ZXN0UmVzdWx0cy5oYXNQcmV0dHlQYXRjaCgpKQorICAgICAgICAgICAgaHRtbCAr
PSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayhwcmVmaXgsICctcHJldHR5LWRpZmYu
aHRtbCcsICdwcmV0dHkgZGlmZicpOworCisgICAgICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLmhh
c1dEaWZmKCkpCisgICAgICAgICAgICBodG1sICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1
bHRMaW5rKHByZWZpeCwgJy13ZGlmZi5odG1sJywgJ3dkaWZmJyk7CisKKyAgICAgICAgcmV0dXJu
IGh0bWw7CisgICAgfQorCisgICAgZmxha2luZXNzRGFzaGJvYXJkVVJMRm9yVGVzdHModGVzdE9i
amVjdHMpCisgICAgeworICAgICAgICAvLyBGSVhNRToganVzdCBtYXAgYW5kIGpvaW4gaGVyZS4K
KyAgICAgICAgbGV0IHRlc3RMaXN0ID0gJyc7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
dGVzdE9iamVjdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHRlc3RMaXN0ICs9IHRlc3RP
YmplY3RzW2ldLm5hbWU7CisKKyAgICAgICAgICAgIGlmIChpICE9IHRlc3RPYmplY3RzLmxlbmd0
aCAtIDEpCisgICAgICAgICAgICAgICAgdGVzdExpc3QgKz0gJywnOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuICdodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRl
c3RzJnRlc3Q9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0TGlzdCk7CisgICAgfQorCisgICAg
X3VwZGF0ZVBhZ2VUaXRsZSgpCisgICAgeworICAgICAgICBsZXQgZGF0ZVN0cmluZyA9IHRoaXMu
dGVzdFJlc3VsdHMuZGF0ZSgpOworICAgICAgICBsZXQgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCd0aXRsZScpOworICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9ICdMYXlvdXQgVGVz
dCBSZXN1bHRzIGZyb20gJyArIGRhdGVTdHJpbmc7CisgICAgICAgIGRvY3VtZW50LmhlYWQuYXBw
ZW5kQ2hpbGQodGl0bGUpOworICAgIH0KKyAgICAKKyAgICAvLyBPcHRpb25zIGhhbmRsaW5nLiBG
SVhNRTogbW92ZSB0byBhIHNlcGFyYXRlIGNsYXNzPworICAgIHVwZGF0ZUFsbE9wdGlvbnMoKQor
ICAgIHsKKyAgICAgICAgVXRpbHMuZm9yRWFjaChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcj
b3B0aW9ucy1tZW51IGlucHV0JyksIGlucHV0ID0+IHsgaW5wdXQub25jaGFuZ2UoKSB9KTsKKyAg
ICB9CisKKyAgICB0b2dnbGVPcHRpb25zTWVudSgpCisgICAgeworICAgICAgICBsZXQgbWVudSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcHRpb25zLW1lbnUnKTsKKyAgICAgICAgbWVudS5j
bGFzc05hbWUgPSAobWVudS5jbGFzc05hbWUgPT0gJ2hpZGRlbi1tZW51JykgPyAnJyA6ICdoaWRk
ZW4tbWVudSc7CisgICAgfQorCisgICAgaGFuZGxlVG9nZ2xlVXNlTmV3bGluZXMoKQorICAgIHsK
KyAgICAgICAgT3B0aW9uV3JpdGVyLnNhdmUoKTsKKyAgICAgICAgdGVzdE5hdmlnYXRvci51cGRh
dGVGbGFnZ2VkVGVzdHMoKTsKKyAgICB9CisKKyAgICBoYW5kbGVVbmV4cGVjdGVkUmVzdWx0c0No
YW5nZSgpCisgICAgeworICAgICAgICBPcHRpb25Xcml0ZXIuc2F2ZSgpOworICAgICAgICB0aGlz
Ll91cGRhdGVFeHBlY3RlZEZhaWx1cmVzKCk7CisgICAgfQorCisgICAgZXhwYW5kQWxsRXhwZWN0
YXRpb25zKCkKKyAgICB7CisgICAgICAgIGxldCBleHBhbmRMaW5rcyA9IHRoaXMuX3Zpc2libGVF
eHBhbmRMaW5rcygpOworICAgICAgICBmb3IgKGxldCBsaW5rIG9mIGV4cGFuZExpbmtzKQorICAg
ICAgICAgICAgVXRpbHMuYXN5bmMobGluayA9PiB7IGNvbnRyb2xsZXIuZXhwYW5kRXhwZWN0YXRp
b25zKGxpbmspIH0sIFsgbGluayBdKTsKKyAgICB9CisKKyAgICBjb2xsYXBzZUFsbEV4cGVjdGF0
aW9ucygpCisgICAgeworICAgICAgICBsZXQgZXhwYW5kTGlua3MgPSB0aGlzLl92aXNpYmxlRXhw
YW5kTGlua3MoKTsKKyAgICAgICAgZm9yIChsZXQgbGluayBvZiBleHBhbmRMaW5rcykKKyAgICAg
ICAgICAgIFV0aWxzLmFzeW5jKGxpbmsgPT4geyBjb250cm9sbGVyLmNvbGxhcHNlRXhwZWN0YXRp
b25zKGxpbmspIH0sIFsgbGluayBdKTsKKyAgICB9CisKKyAgICBleHBhbmRFeHBlY3RhdGlvbnMo
ZXhwYW5kTGluaykKKyAgICB7CisgICAgICAgIGxldCByb3cgPSBVdGlscy5wYXJlbnRPZlR5cGUo
ZXhwYW5kTGluaywgJ3RyJyk7CisgICAgICAgIGxldCBwYXJlbnRUYm9keSA9IHJvdy5wYXJlbnRO
b2RlOworICAgICAgICBsZXQgZXhpc3RpbmdSZXN1bHRzUm93ID0gcGFyZW50VGJvZHkucXVlcnlT
ZWxlY3RvcignLnJlc3VsdHMtcm93Jyk7CisgICAgCisgICAgICAgIGNvbnN0IGVuRGFzaCA9ICdc
dTIwMTMnOworICAgICAgICBleHBhbmRMaW5rLnRleHRDb250ZW50ID0gZW5EYXNoOworICAgICAg
ICBpZiAoZXhpc3RpbmdSZXN1bHRzUm93KSB7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVFeHBh
bmRlZFN0YXRlKGV4aXN0aW5nUmVzdWx0c1JvdywgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBsZXQgdGVzdE5hbWUgPSByb3cuZ2V0QXR0cmlidXRlKCdk
YXRhLXRlc3QtbmFtZScpOworICAgICAgICBsZXQgdGVzdFJlc3VsdCA9IHRoaXMudGVzdFJlc3Vs
dHMudGVzdFdpdGhOYW1lKHRlc3ROYW1lKTsKKworICAgICAgICBsZXQgbmV3Um93ID0gVGVzdFJl
c3VsdHNDb250cm9sbGVyLl9idWlsZEV4cGFuZGVkUm93Rm9yVGVzdCh0ZXN0UmVzdWx0LCByb3cp
OworICAgICAgICBwYXJlbnRUYm9keS5hcHBlbmRDaGlsZChuZXdSb3cpOworCisgICAgICAgIHRo
aXMuX3VwZGF0ZUV4cGFuZGVkU3RhdGUobmV3Um93LCB0cnVlKTsKKworICAgICAgICB0aGlzLl91
cGRhdGVJbWFnZVRvZ2dsaW5nVGltZXIoKTsKKyAgICB9CisKKyAgICBjb2xsYXBzZUV4cGVjdGF0
aW9ucyhleHBhbmRMaW5rKQorICAgIHsKKyAgICAgICAgZXhwYW5kTGluay50ZXh0Q29udGVudCA9
ICcrJzsKKyAgICAgICAgbGV0IGV4aXN0aW5nUmVzdWx0c1JvdyA9IFV0aWxzLnBhcmVudE9mVHlw
ZShleHBhbmRMaW5rLCAndGJvZHknKS5xdWVyeVNlbGVjdG9yKCcucmVzdWx0cy1yb3cnKTsKKyAg
ICAgICAgaWYgKGV4aXN0aW5nUmVzdWx0c1JvdykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV4
cGFuZGVkU3RhdGUoZXhpc3RpbmdSZXN1bHRzUm93LCBmYWxzZSk7CisgICAgfQorCisgICAgdG9n
Z2xlRXhwZWN0YXRpb25zKGVsZW1lbnQpCisgICAgeworICAgICAgICBsZXQgZXhwYW5kTGluayA9
IGVsZW1lbnQ7CisgICAgICAgIGlmIChleHBhbmRMaW5rLmNsYXNzTmFtZSAhPSAnZXhwYW5kLWJ1
dHRvbi10ZXh0JykKKyAgICAgICAgICAgIGV4cGFuZExpbmsgPSBleHBhbmRMaW5rLnF1ZXJ5U2Vs
ZWN0b3IoJy5leHBhbmQtYnV0dG9uLXRleHQnKTsKKworICAgICAgICBpZiAoZXhwYW5kTGluay50
ZXh0Q29udGVudCA9PSAnKycpCisgICAgICAgICAgICB0aGlzLmV4cGFuZEV4cGVjdGF0aW9ucyhl
eHBhbmRMaW5rKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5jb2xsYXBzZUV4cGVj
dGF0aW9ucyhleHBhbmRMaW5rKTsKKyAgICB9CisKKyAgICBfdXBkYXRlRXhwYW5kZWRTdGF0ZShy
b3csIGlzRXhwYW5kZWQpCisgICAgeworICAgICAgICByb3cuc2V0QXR0cmlidXRlKCdkYXRhLWV4
cGFuZGVkJywgaXNFeHBhbmRlZCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUltYWdlVG9nZ2xpbmdU
aW1lcigpOworICAgIH0KKworICAgIGhhbmRsZVRvZ2dsZUltYWdlc0NoYW5nZSgpCisgICAgewor
ICAgICAgICBPcHRpb25Xcml0ZXIuc2F2ZSgpOworICAgICAgICB0aGlzLl91cGRhdGVUb2dnbGlu
Z0ltYWdlcygpOworICAgIH0KKworICAgIF92aXNpYmxlRXhwYW5kTGlua3MoKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMoKSkKKyAgICAgICAgICAg
IHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keTpub3QoLmV4cGVjdGVkKSAu
ZXhwYW5kLWJ1dHRvbi10ZXh0Jyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXhwYW5kLWJ1dHRvbi10ZXh0Jyk7CisgICAgfQor
CisgICAgc3RhdGljIF90b2dnbGluZ0ltYWdlKHByZWZpeCkKKyAgICB7CisgICAgICAgIHJldHVy
biAnPGRpdiBjbGFzcz1yZXN1bHQtY29udGFpbmVyPjxkaXYgY2xhc3M9ImxhYmVsIGltYWdlVGV4
dCI+PC9kaXY+PGltZyBjbGFzcz1hbmltYXRlZEltYWdlIGRhdGEtcHJlZml4PSInICsgcHJlZml4
ICsgJyI+PC9pbWc+PC9kaXY+JzsKKyAgICB9CisKKyAgICBfdXBkYXRlVG9nZ2xpbmdJbWFnZXMo
KQorICAgIHsKKyAgICAgICAgdGhpcy5zaG91bGRUb2dnbGVJbWFnZXMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndG9nZ2xlLWltYWdlcycpLmNoZWNrZWQ7CisKKyAgICAgICAgLy8gRklYTUU6
IHRoaXMgaXMgYWxsIHByZXR0eSBjb25mdXNpbmcuIFNpbXBsaWZ5LgorICAgICAgICBpZiAodGhp
cy5zaG91bGRUb2dnbGVJbWFnZXMpIHsKKyAgICAgICAgICAgIFV0aWxzLmZvckVhY2goZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgndGFibGU6bm90KCNtaXNzaW5nLXRhYmxlKSB0Ym9keTpub3Qo
W21pc21hdGNocmVmdGVzdF0pIGFbaHJlZiQ9Ii5wbmciXScpLCBUZXN0UmVzdWx0c0NvbnRyb2xs
ZXIuX2NvbnZlcnRUb1RvZ2dsaW5nSGFuZGxlcihmdW5jdGlvbihwcmVmaXgpIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsocHJlZml4LCAn
LWRpZmZzLmh0bWwnLCAnaW1hZ2VzJyk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICBV
dGlscy5mb3JFYWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlOm5vdCgjbWlzc2lu
Zy10YWJsZSkgdGJvZHk6bm90KFttaXNtYXRjaHJlZnRlc3RdKSBpbWdbc3JjJD0iLnBuZyJdJyks
IFRlc3RSZXN1bHRzQ29udHJvbGxlci5fY29udmVydFRvVG9nZ2xpbmdIYW5kbGVyKFRlc3RSZXN1
bHRzQ29udHJvbGxlci5fdG9nZ2xpbmdJbWFnZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgVXRpbHMuZm9yRWFjaChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWYkPSIt
ZGlmZnMuaHRtbCJdJyksIGVsZW1lbnQgPT4geworICAgICAgICAgICAgICAgIFRlc3RSZXN1bHRz
Q29udHJvbGxlci5fY29udmVydFRvTm9uVG9nZ2xpbmdIYW5kbGVyKGVsZW1lbnQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBVdGlscy5mb3JFYWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJy5hbmltYXRlZEltYWdlJyksIFRlc3RSZXN1bHRzQ29udHJvbGxlci5fY29udmVydFRv
Tm9uVG9nZ2xpbmdIYW5kbGVyKGZ1bmN0aW9uIChhYnNvbHV0ZVByZWZpeCwgc3VmZml4KSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIFRlc3RSZXN1bHRzQ29udHJvbGxlci5fcmVzdWx0SWZyYW1l
KGFic29sdXRlUHJlZml4ICsgc3VmZml4KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgfQor
CisgICAgICAgIHRoaXMuX3VwZGF0ZUltYWdlVG9nZ2xpbmdUaW1lcigpOworICAgIH0KKworICAg
IF91cGRhdGVFeHBlY3RlZEZhaWx1cmVzKCkKKyAgICB7CisgICAgICAgIC8vIEdyb3NzIHRvIGRv
IHRoaXMgYnkgc2V0dGluZyBzdHlsZXNoZWV0IHRleHQuIFVzZSBhIGJvZHkgY2xhc3MhCisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1bmV4cGVjdGVkLXN0eWxlJykudGV4dENvbnRl
bnQgPSB0aGlzLm9ubHlTaG93VW5leHBlY3RlZEZhaWx1cmVzKCkgPyAnLmV4cGVjdGVkIHsgZGlz
cGxheTogbm9uZTsgfScgOiAnJzsKKworICAgICAgICB0aGlzLnVwZGF0ZVRlc3RsaXN0Q291bnRz
KCk7CisgICAgICAgIHRlc3ROYXZpZ2F0b3Iub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXNDaGFu
Z2VkKCk7CisgICAgfQorCisgICAgc3RhdGljIF9idWlsZEV4cGFuZGVkUm93Rm9yVGVzdCh0ZXN0
UmVzdWx0LCByb3cpCisgICAgeworICAgICAgICBsZXQgbmV3Um93ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndHInKTsKKyAgICAgICAgbmV3Um93LmNsYXNzTmFtZSA9ICdyZXN1bHRzLXJvdyc7
CisgICAgICAgIGxldCBuZXdDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAg
ICAgICAgbmV3Q2VsbC5jb2xTcGFuID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJykubGVuZ3Ro
OworCisgICAgICAgIC8vIEZJWE1FOiBtaWdyYXRlIG1vcmUgb2YgY29kZSB0byB1c2luZyB0ZXN0
UmVzdWx0IGZvciBidWlsZGluZyB0aGUgZXhwYW5kZWQgY29udGVudC4KKyAgICAgICAgbGV0IHJl
c3VsdExpbmtzID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXN1bHQtbGluaycpOworICAgICAg
ICBsZXQgaGFzVG9nZ2xpbmdJbWFnZXMgPSBmYWxzZTsKKyAgICAgICAgZm9yIChsZXQgbGluayBv
ZiByZXN1bHRMaW5rcykgeworICAgICAgICAgICAgbGV0IHJlc3VsdDsKKyAgICAgICAgICAgIGlm
IChsaW5rLnRleHRDb250ZW50ID09ICdpbWFnZXMnKSB7CisgICAgICAgICAgICAgICAgaGFzVG9n
Z2xpbmdJbWFnZXMgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRlc3RSZXN1bHRz
Q29udHJvbGxlci5fdG9nZ2xpbmdJbWFnZShsaW5rLmdldEF0dHJpYnV0ZSgnZGF0YS1wcmVmaXgn
KSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBUZXN0UmVz
dWx0c0NvbnRyb2xsZXIuX3Jlc3VsdElmcmFtZShsaW5rLmhyZWYpOworCisgICAgICAgICAgICBV
dGlscy5hcHBlbmRIVE1MKG5ld0NlbGwsIHJlc3VsdCk7ICAgIAorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHRlc3RSZXN1bHQuaGFzTGVhaygpKQorICAgICAgICAgICAgbmV3Q2VsbC5hcHBlbmRD
aGlsZChUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX21ha2VMZWFrc0NlbGwodGVzdFJlc3VsdCkpOwor
CisgICAgICAgIG5ld1Jvdy5hcHBlbmRDaGlsZChuZXdDZWxsKTsKKworICAgICAgICByZXR1cm4g
bmV3Um93OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgX21ha2VMZWFrc0NlbGwodGVzdFJlc3Vs
dCkKKyAgICB7CisgICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdyZXN1bHQtY29udGFpbmVy
IGxlYWtzJzsKKyAgICAgICAgCisgICAgICAgIGxldCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgICAgICBsYWJlbC5jbGFzc05hbWUgPSAnbGFiZWwnOworICAgICAg
ICBsYWJlbC50ZXh0Q29udGVudCA9ICJMZWFrcyI7CisgICAgICAgIGNvbnRhaW5lci5hcHBlbmRD
aGlsZChsYWJlbCk7CisKKyAgICAgICAgbGV0IGxlYWtzVGFibGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCd0YWJsZScpOworICAgICAgICAKKyAgICAgICAgZm9yIChsZXQgbGVhayBvZiB0ZXN0
UmVzdWx0LmluZm8ubGVha3MpIHsKKyAgICAgICAgICAgIGxldCBsZWFrUm93ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgndHInKTsKKworICAgICAgICAgICAgZm9yIChsZXQgbGVha2VkT2JqZWN0
VHlwZSBpbiBsZWFrKSB7CisgICAgICAgICAgICAgICAgbGV0IHRoID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndGgnKTsKKyAgICAgICAgICAgICAgICB0aC50ZXh0Q29udGVudCA9IGxlYWtlZE9i
amVjdFR5cGU7CisgICAgICAgICAgICAgICAgbGV0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndGQnKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBsZXQgdXJsID0gbGVh
a1tsZWFrZWRPYmplY3RUeXBlXTsgLy8gRklYTUU6IHdoZW4gd2UgdHJhY2sgbGVha3Mgb3RoZXIg
dGhhbiBkb2N1bWVudHMsIHRoaXMgbWlnaHQgbm90IGJlIGEgVVJMLgorICAgICAgICAgICAgICAg
IHRkLnRleHRDb250ZW50ID0gY29udHJvbGxlci5jb252ZXJ0VG9MYXlvdXRUZXN0QmFzZVJlbGF0
aXZlVVJMKHVybCkKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBsZWFrUm93LmFw
cGVuZENoaWxkKHRoKTsKKyAgICAgICAgICAgICAgICBsZWFrUm93LmFwcGVuZENoaWxkKHRkKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbGVha3NUYWJsZS5hcHBl
bmRDaGlsZChsZWFrUm93KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY29udGFpbmVy
LmFwcGVuZENoaWxkKGxlYWtzVGFibGUpOworICAgICAgICByZXR1cm4gY29udGFpbmVyOworICAg
IH0KKworICAgIHN0YXRpYyBfcmVzdWx0SWZyYW1lKHNyYykKKyAgICB7CisgICAgICAgIC8vIEZJ
WE1FOiB1c2UgYXVkaW8gdGFncyBmb3IgQVVESU8gdGVzdHM/CisgICAgICAgIGxldCBsYXlvdXRU
ZXN0c0luZGV4ID0gc3JjLmluZGV4T2YoJ0xheW91dFRlc3RzJyk7CisgICAgICAgIGxldCBuYW1l
OworICAgICAgICBpZiAobGF5b3V0VGVzdHNJbmRleCAhPSAtMSkgeworICAgICAgICAgICAgbGV0
IGhhc1RyYWMgPSBzcmMuaW5kZXhPZigndHJhYy53ZWJraXQub3JnJykgIT0gLTE7CisgICAgICAg
ICAgICBsZXQgcHJlZml4ID0gaGFzVHJhYyA/ICd0cmFjLndlYmtpdC5vcmcvLi4uLycgOiAnJzsK
KyAgICAgICAgICAgIG5hbWUgPSBwcmVmaXggKyBzcmMuc3Vic3RyaW5nKGxheW91dFRlc3RzSW5k
ZXggKyAnTGF5b3V0VGVzdHMvJy5sZW5ndGgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgbGV0IGxhc3REYXNoSW5kZXggPSBzcmMubGFzdEluZGV4T2YoJy1wcmV0dHknKTsKKyAgICAg
ICAgICAgIGlmIChsYXN0RGFzaEluZGV4ID09IC0xKQorICAgICAgICAgICAgICAgIGxhc3REYXNo
SW5kZXggPSBzcmMubGFzdEluZGV4T2YoJy0nKTsKKyAgICAgICAgICAgIG5hbWUgPSBzcmMuc3Vi
c3RyaW5nKGxhc3REYXNoSW5kZXggKyAxKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB0YWdO
YW1lID0gKHNyYy5sYXN0SW5kZXhPZignLnBuZycpID09IC0xKSA/ICdpZnJhbWUnIDogJ2ltZyc7
CisKKyAgICAgICAgaWYgKHRhZ05hbWUgIT0gJ2ltZycpCisgICAgICAgICAgICBzcmMgKz0gJz9m
b3JtYXQ9dHh0JzsKKyAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPXJlc3VsdC1jb250YWluZXI+
PGRpdiBjbGFzcz1sYWJlbD4nICsgbmFtZSArICc8L2Rpdj48JyArIHRhZ05hbWUgKyAnIHNyYz0i
JyArIHNyYyArICciPjwvJyArIHRhZ05hbWUgKyAnPjwvZGl2Pic7CisgICAgfQorCisKKyAgICBz
dGF0aWMgX3RvZ2dsZUltYWdlcygpCisgICAgeworICAgICAgICBsZXQgaW1hZ2VzID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnLmFuaW1hdGVkSW1hZ2UnKTsKKyAgICAgICAgbGV0IGltYWdl
VGV4dHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW1hZ2VUZXh0Jyk7CisgICAgICAg
IGZvciAobGV0IGkgPSAwLCBsZW4gPSBpbWFnZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAg
ICAgICAgICAgIGxldCBpbWFnZSA9IGltYWdlc1tpXTsKKyAgICAgICAgICAgIGxldCB0ZXh0ID0g
aW1hZ2VUZXh0c1tpXTsKKyAgICAgICAgICAgIGlmICh0ZXh0LnRleHRDb250ZW50ID09ICdFeHBl
Y3RlZCBJbWFnZScpIHsKKyAgICAgICAgICAgICAgICB0ZXh0LnRleHRDb250ZW50ID0gJ0FjdHVh
bCBJbWFnZSc7CisgICAgICAgICAgICAgICAgaW1hZ2Uuc3JjID0gaW1hZ2UuZ2V0QXR0cmlidXRl
KCdkYXRhLXByZWZpeCcpICsgJy1hY3R1YWwucG5nJzsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdGV4dC50ZXh0Q29udGVudCA9ICdFeHBlY3RlZCBJbWFnZSc7CisgICAg
ICAgICAgICAgICAgaW1hZ2Uuc3JjID0gaW1hZ2UuZ2V0QXR0cmlidXRlKCdkYXRhLXByZWZpeCcp
ICsgJy1leHBlY3RlZC5wbmcnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgX3VwZGF0ZUltYWdlVG9nZ2xpbmdUaW1lcigpCisgICAgeworICAgICAgICBsZXQgaGFzVmlz
aWJsZUFuaW1hdGVkSW1hZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucmVzdWx0cy1yb3db
ZGF0YS1leHBhbmRlZD0idHJ1ZSJdIC5hbmltYXRlZEltYWdlJyk7CisgICAgICAgIGlmICghaGFz
VmlzaWJsZUFuaW1hdGVkSW1hZ2UpIHsKKyAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5f
dG9nZ2xpbmdJbWFnZUludGVydmFsKTsKKyAgICAgICAgICAgIHRoaXMuX3RvZ2dsaW5nSW1hZ2VJ
bnRlcnZhbCA9IG51bGw7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIXRoaXMuX3RvZ2dsaW5nSW1hZ2VJbnRlcnZhbCkgeworICAgICAgICAgICAgVGVzdFJl
c3VsdHNDb250cm9sbGVyLl90b2dnbGVJbWFnZXMoKTsKKyAgICAgICAgICAgIHRoaXMuX3RvZ2ds
aW5nSW1hZ2VJbnRlcnZhbCA9IHNldEludGVydmFsKFRlc3RSZXN1bHRzQ29udHJvbGxlci5fdG9n
Z2xlSW1hZ2VzLCAyMDAwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgX2dl
dFJlc3VsdENvbnRhaW5lcihub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChub2RlLnRhZ05h
bWUgPT0gJ0lNRycpID8gVXRpbHMucGFyZW50T2ZUeXBlKG5vZGUsICcucmVzdWx0LWNvbnRhaW5l
cicpIDogbm9kZTsKKyAgICB9CisKKyAgICBzdGF0aWMgX2NvbnZlcnRUb1RvZ2dsaW5nSGFuZGxl
cih0b2dnbGluZ0ltYWdlRnVuY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24o
bm9kZSkgeworICAgICAgICAgICAgbGV0IHVybCA9IChub2RlLnRhZ05hbWUgPT0gJ0lNRycpID8g
bm9kZS5zcmMgOiBub2RlLmhyZWY7CisgICAgICAgICAgICBpZiAodXJsLm1hdGNoKCctZXhwZWN0
ZWQucG5nJCcpKQorICAgICAgICAgICAgICAgIFRlc3RSZXN1bHRzQ29udHJvbGxlci5fZ2V0UmVz
dWx0Q29udGFpbmVyKG5vZGUpLnJlbW92ZSgpOworICAgICAgICAgICAgZWxzZSBpZiAodXJsLm1h
dGNoKCctYWN0dWFsLnBuZyQnKSkgeworICAgICAgICAgICAgICAgIGxldCBuYW1lID0gVXRpbHMu
cGFyZW50T2ZUeXBlKG5vZGUsICd0Ym9keScpLnF1ZXJ5U2VsZWN0b3IoJy50ZXN0LWxpbmsnKS50
ZXh0Q29udGVudDsKKyAgICAgICAgICAgICAgICBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX2dldFJl
c3VsdENvbnRhaW5lcihub2RlKS5vdXRlckhUTUwgPSB0b2dnbGluZ0ltYWdlRnVuY3Rpb24oVXRp
bHMuc3RyaXBFeHRlbnNpb24obmFtZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHN0YXRpYyBfY29udmVydFRvTm9uVG9nZ2xpbmdIYW5kbGVyKHJlc3VsdEZ1
bmN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHsKKyAgICAgICAg
ICAgIGxldCBwcmVmaXggPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1wcmVmaXgnKTsKKyAgICAg
ICAgICAgIFRlc3RSZXN1bHRzQ29udHJvbGxlci5fZ2V0UmVzdWx0Q29udGFpbmVyKG5vZGUpLm91
dGVySFRNTCA9IHJlc3VsdEZ1bmN0aW9uKHByZWZpeCwgJy1leHBlY3RlZC5wbmcnLCAnZXhwZWN0
ZWQnKSArIHJlc3VsdEZ1bmN0aW9uKHByZWZpeCwgJy1hY3R1YWwucG5nJywgJ2FjdHVhbCcpOwor
ICAgICAgICB9CisgICAgfQorfTsKKworY2xhc3MgU2VjdGlvbkJ1aWxkZXIgeworICAgIAorICAg
IGNvbnN0cnVjdG9yKHRlc3RzLCB0YWJsZUlELCByZXN1bHRzQ29udHJvbGxlcikKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3Rlc3RzID0gdGVzdHM7CisgICAgICAgIHRoaXMuX3RhYmxlID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIgPSByZXN1bHRzQ29udHJvbGxlcjsKKyAg
ICAgICAgdGhpcy5fdGFibGVJRCA9IHRhYmxlSUQ7CisgICAgfQorCisgICAgYnVpbGQoKQorICAg
IHsKKyAgICAgICAgVGVzdFJlc3VsdHMuc29ydEJ5TmFtZSh0aGlzLl90ZXN0cyk7CisgICAgICAg
IAorICAgICAgICBsZXQgc2VjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24n
KTsKKyAgICAgICAgc2VjdGlvbi5hcHBlbmRDaGlsZChUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX3Rl
c3RMaXN0SGVhZGVyKHRoaXMuc2VjdGlvblRpdGxlKCkpKTsKKyAgICAgICAgaWYgKHRoaXMuaGlk
ZVdoZW5TaG93aW5nVW5leHBlY3RlZFJlc3VsdHNPbmx5KCkpCisgICAgICAgICAgICBzZWN0aW9u
LmNsYXNzTGlzdC5hZGQoJ2V4cGVjdGVkJyk7CisKKyAgICAgICAgdGhpcy5fdGFibGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpOworICAgICAgICB0aGlzLl90YWJsZS5pZCA9IHRo
aXMudGFibGVJRCgpOworICAgICAgICB0aGlzLmFkZFRhYmxlSGVhZGVyKCk7CisKKyAgICAgICAg
bGV0IHZpc2libGVSZXN1bHRzQ291bnQgPSAwOworICAgICAgICBmb3IgKGxldCB0ZXN0UmVzdWx0
IG9mIHRoaXMuX3Rlc3RzKSB7CisgICAgICAgICAgICBsZXQgdGJvZHkgPSB0aGlzLmNyZWF0ZVRh
YmxlUm93KHRlc3RSZXN1bHQpOworICAgICAgICAgICAgdGhpcy5fdGFibGUuYXBwZW5kQ2hpbGQo
dGJvZHkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRoaXMuX3Jlc3VsdHNDb250
cm9sbGVyLm9ubHlTaG93VW5leHBlY3RlZEZhaWx1cmVzKCkgfHwgdGVzdFJlc3VsdC5pc0V4cGVj
dGVkKQorICAgICAgICAgICAgICAgICsrdmlzaWJsZVJlc3VsdHNDb3VudDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgc2VjdGlvbi5xdWVyeVNlbGVjdG9yKCcudGVzdC1saXN0LWNvdW50
JykudGV4dENvbnRlbnQgPSB2aXNpYmxlUmVzdWx0c0NvdW50OworICAgICAgICBzZWN0aW9uLmFw
cGVuZENoaWxkKHRoaXMuX3RhYmxlKTsKKyAgICAgICAgcmV0dXJuIHNlY3Rpb247CisgICAgfQor
CisgICAgY3JlYXRlVGFibGVSb3codGVzdFJlc3VsdCkKKyAgICB7CisgICAgICAgIGxldCB0Ym9k
eSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5Jyk7CisgICAgICAgIGlmICh0ZXN0UmVz
dWx0LmlzRXhwZWN0ZWQpCisgICAgICAgICAgICB0Ym9keS5jbGFzc0xpc3QuYWRkKCdleHBlY3Rl
ZCcpOworICAgICAgICAKKyAgICAgICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3RyJyk7CisgICAgICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdC1uYW1lJywgdGVzdFJl
c3VsdC5uYW1lKTsKKyAgICAgICAgdGJvZHkuYXBwZW5kQ2hpbGQocm93KTsKKworICAgICAgICBs
ZXQgdGVzdE5hbWVDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAg
dGhpcy5maWxsVGVzdENlbGwodGVzdFJlc3VsdCwgdGVzdE5hbWVDZWxsKTsKKyAgICAgICAgcm93
LmFwcGVuZENoaWxkKHRlc3ROYW1lQ2VsbCk7CisKKyAgICAgICAgbGV0IHJlc3VsdENlbGwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICB0aGlzLmZpbGxUZXN0UmVzdWx0
Q2VsbCh0ZXN0UmVzdWx0LCByZXN1bHRDZWxsKTsKKyAgICAgICAgcm93LmFwcGVuZENoaWxkKHJl
c3VsdENlbGwpOworCisgICAgICAgIGxldCBoaXN0b3J5Q2VsbCA9IHRoaXMuY3JlYXRlSGlzdG9y
eUNlbGwodGVzdFJlc3VsdCk7CisgICAgICAgIGlmIChoaXN0b3J5Q2VsbCkKKyAgICAgICAgICAg
IHJvdy5hcHBlbmRDaGlsZChoaXN0b3J5Q2VsbCk7CisKKyAgICAgICAgcmV0dXJuIHRib2R5Owor
ICAgIH0KKyAgICAKKyAgICBoaWRlV2hlblNob3dpbmdVbmV4cGVjdGVkUmVzdWx0c09ubHkoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICFUZXN0UmVzdWx0cy5oYXNVbmV4cGVjdGVkUmVzdWx0KHRo
aXMuX3Rlc3RzKTsKKyAgICB9CisgICAgCisgICAgYWRkVGFibGVIZWFkZXIoKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgZmlsbFRlc3RDZWxsKHRlc3RSZXN1bHQsIGNlbGwpCisgICAgeworICAg
ICAgICBsZXQgdGVzdExpbmsgPSB0aGlzLmxpbmtpZnlUZXN0TmFtZSgpID8gdGhpcy5fcmVzdWx0
c0NvbnRyb2xsZXIudGVzdExpbmsodGVzdFJlc3VsdCkgOiB0ZXN0UmVzdWx0Lm5hbWU7CisgICAg
ICAgIGlmICh0aGlzLnJvd3NBcmVFeHBhbmRhYmxlKCkpIHsKKyAgICAgICAgICAgIGNlbGwuaW5u
ZXJIVE1MID0gdGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIuZXhwYW5kQnV0dG9uU3BhbigpICsgdGVz
dExpbms7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjZWxsLmlu
bmVySFRNTCA9IHRlc3RMaW5rOworICAgIH0KKworICAgIGZpbGxUZXN0UmVzdWx0Q2VsbCh0ZXN0
UmVzdWx0LCBjZWxsKQorICAgIHsKKyAgICB9CisgICAgCisgICAgY3JlYXRlSGlzdG9yeUNlbGwo
dGVzdFJlc3VsdCkKKyAgICB7CisgICAgICAgIGxldCBoaXN0b3J5Q2VsbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIGhpc3RvcnlDZWxsLmlubmVySFRNTCA9ICc8YSBo
cmVmPSInICsgdGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIuZmxha2luZXNzRGFzaGJvYXJkVVJMRm9y
VGVzdHMoW3Rlc3RSZXN1bHRdKSArICciPmhpc3Rvcnk8L2E+JworICAgICAgICByZXR1cm4gaGlz
dG9yeUNlbGw7CisgICAgfQorICAgIAorICAgIHRhYmxlSUQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3RhYmxlSUQ7CisgICAgfQorICAgIAorICAgIHJvd3NBcmVFeHBhbmRhYmxlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBsaW5raWZ5VGVz
dE5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc2VjdGlv
blRpdGxlKCkgeyByZXR1cm4gJyc7IH0KK307CisKK2NsYXNzIEZhaWx1cmVzU2VjdGlvbkJ1aWxk
ZXIgZXh0ZW5kcyBTZWN0aW9uQnVpbGRlciB7CisgICAgCisgICAgYWRkVGFibGVIZWFkZXIoKQor
ICAgIHsKKyAgICAgICAgbGV0IGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RoZWFk
Jyk7CisgICAgICAgIGxldCBodG1sID0gJzx0aD50ZXN0PC90aD48dGggaWQ9InRleHQtcmVzdWx0
cy1oZWFkZXIiPnJlc3VsdHM8L3RoPjx0aCBpZD0iaW1hZ2UtcmVzdWx0cy1oZWFkZXIiPmltYWdl
IHJlc3VsdHM8L3RoPic7CisKKyAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHNDb250cm9sbGVyLnRl
c3RSZXN1bHRzLnVzZXNFeHBlY3RhdGlvbnNGaWxlKCkpCisgICAgICAgICAgICBodG1sICs9ICc8
dGg+YWN0dWFsIGZhaWx1cmU8L3RoPjx0aD5leHBlY3RlZCBmYWlsdXJlPC90aD4nOworCisgICAg
ICAgIGh0bWwgKz0gJzx0aD48YSBocmVmPSInICsgdGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIuZmxh
a2luZXNzRGFzaGJvYXJkVVJMRm9yVGVzdHModGhpcy5fdGVzdHMpICsgJyI+aGlzdG9yeTwvYT48
L3RoPic7CisKKyAgICAgICAgaWYgKHRoaXMudGFibGVJRCgpID09ICdmbGFreS10ZXN0cy10YWJs
ZScpIC8vIEZJWE1FOiB1c2UgdGhlIGNsYXNzZXMsIEx1a2UhCisgICAgICAgICAgICBodG1sICs9
ICc8dGg+ZmFpbHVyZXM8L3RoPic7CisKKyAgICAgICAgaGVhZGVyLmlubmVySFRNTCA9IGh0bWw7
CisgICAgICAgIHRoaXMuX3RhYmxlLmFwcGVuZENoaWxkKGhlYWRlcik7CisgICAgfQorICAgIAor
ICAgIGNyZWF0ZVRhYmxlUm93KHRlc3RSZXN1bHQpCisgICAgeworICAgICAgICBsZXQgdGJvZHkg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0Ym9keScpOworICAgICAgICBpZiAodGVzdFJlc3Vs
dC5pc0V4cGVjdGVkKQorICAgICAgICAgICAgdGJvZHkuY2xhc3NMaXN0LmFkZCgnZXhwZWN0ZWQn
KTsKKyAgICAgICAgCisgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzTWlzbWF0Y2hSZWZUZXN0KCkp
CisgICAgICAgICAgICB0Ym9keS5zZXRBdHRyaWJ1dGUoJ21pc21hdGNocmVmdGVzdCcsICd0cnVl
Jyk7CisKKyAgICAgICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7Cisg
ICAgICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdC1uYW1lJywgdGVzdFJlc3VsdC5uYW1l
KTsKKyAgICAgICAgdGJvZHkuYXBwZW5kQ2hpbGQocm93KTsKKyAgICAgICAgCisgICAgICAgIGxl
dCB0ZXN0TmFtZUNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICB0
aGlzLmZpbGxUZXN0Q2VsbCh0ZXN0UmVzdWx0LCB0ZXN0TmFtZUNlbGwpOworICAgICAgICByb3cu
YXBwZW5kQ2hpbGQodGVzdE5hbWVDZWxsKTsKKworICAgICAgICBsZXQgcmVzdWx0Q2VsbCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHRoaXMuZmlsbFRlc3RSZXN1bHRD
ZWxsKHRlc3RSZXN1bHQsIHJlc3VsdENlbGwpOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmVz
dWx0Q2VsbCk7CisKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNUZXh0RmFpbHVyZSgpKQorICAg
ICAgICAgICAgdGhpcy5hcHBlbmRUZXh0RmFpbHVyZUxpbmtzKHRlc3RSZXN1bHQsIHJlc3VsdENl
bGwpOworCisgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzQXVkaW9GYWlsdXJlKCkpCisgICAgICAg
ICAgICB0aGlzLmFwcGVuZEF1ZGlvRmFpbHVyZUxpbmtzKHRlc3RSZXN1bHQsIHJlc3VsdENlbGwp
OworICAgICAgICAgICAgCisgICAgICAgIGlmICh0ZXN0UmVzdWx0Lmhhc01pc3NpbmdSZXN1bHQo
KSkKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kQWN0dWFsT25seUxpbmtzKHRlc3RSZXN1bHQsIHJl
c3VsdENlbGwpOworCisgICAgICAgIGxldCBhY3R1YWxUb2tlbnMgPSB0ZXN0UmVzdWx0LmluZm8u
YWN0dWFsLnNwbGl0KC9ccysvKTsKKworICAgICAgICBsZXQgdGVzdFByZWZpeCA9IFV0aWxzLnN0
cmlwRXh0ZW5zaW9uKHRlc3RSZXN1bHQubmFtZSk7CisgICAgICAgIGxldCBpbWFnZVJlc3VsdHMg
PSB0aGlzLmltYWdlUmVzdWx0TGlua3ModGVzdFJlc3VsdCwgdGVzdFByZWZpeCwgYWN0dWFsVG9r
ZW5zWzBdKTsKKyAgICAgICAgaWYgKCFpbWFnZVJlc3VsdHMgJiYgYWN0dWFsVG9rZW5zLmxlbmd0
aCA+IDEpCisgICAgICAgICAgICBpbWFnZVJlc3VsdHMgPSB0aGlzLmltYWdlUmVzdWx0TGlua3Mo
dGVzdFJlc3VsdCwgJ3JldHJpZXMvJyArIHRlc3RQcmVmaXgsIGFjdHVhbFRva2Vuc1sxXSk7CisK
KyAgICAgICAgbGV0IGltYWdlUmVzdWx0c0NlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0
ZCcpOworICAgICAgICBpbWFnZVJlc3VsdHNDZWxsLmlubmVySFRNTCA9IGltYWdlUmVzdWx0czsK
KyAgICAgICAgcm93LmFwcGVuZENoaWxkKGltYWdlUmVzdWx0c0NlbGwpOworCisgICAgICAgIGlm
ICh0aGlzLl9yZXN1bHRzQ29udHJvbGxlci50ZXN0UmVzdWx0cy51c2VzRXhwZWN0YXRpb25zRmls
ZSgpIHx8IGFjdHVhbFRva2Vucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIGxldCBhY3R1YWxDZWxs
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgICAgIGFjdHVhbENlbGwu
dGV4dENvbnRlbnQgPSB0ZXN0UmVzdWx0LmluZm8uYWN0dWFsOworICAgICAgICAgICAgcm93LmFw
cGVuZENoaWxkKGFjdHVhbENlbGwpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3Jl
c3VsdHNDb250cm9sbGVyLnRlc3RSZXN1bHRzLnVzZXNFeHBlY3RhdGlvbnNGaWxlKCkpIHsKKyAg
ICAgICAgICAgIGxldCBleHBlY3RlZENlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcp
OworICAgICAgICAgICAgZXhwZWN0ZWRDZWxsLnRleHRDb250ZW50ID0gdGVzdFJlc3VsdC5oYXNN
aXNzaW5nUmVzdWx0KCkgPyAnJyA6IHRlc3RSZXN1bHQuaW5mby5leHBlY3RlZDsKKyAgICAgICAg
ICAgIHJvdy5hcHBlbmRDaGlsZChleHBlY3RlZENlbGwpOworICAgICAgICB9CisKKyAgICAgICAg
bGV0IGhpc3RvcnlDZWxsID0gdGhpcy5jcmVhdGVIaXN0b3J5Q2VsbCh0ZXN0UmVzdWx0KTsKKyAg
ICAgICAgaWYgKGhpc3RvcnlDZWxsKQorICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGhpc3Rv
cnlDZWxsKTsKKworICAgICAgICByZXR1cm4gdGJvZHk7CisgICAgfQorCisgICAgYXBwZW5kVGV4
dEZhaWx1cmVMaW5rcyh0ZXN0UmVzdWx0LCBjZWxsKQorICAgIHsKKyAgICAgICAgY2VsbC5pbm5l
ckhUTUwgKz0gdGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIudGV4dFJlc3VsdExpbmtzKFV0aWxzLnN0
cmlwRXh0ZW5zaW9uKHRlc3RSZXN1bHQubmFtZSkpOworICAgIH0KKyAgICAKKyAgICBhcHBlbmRB
dWRpb0ZhaWx1cmVMaW5rcyh0ZXN0UmVzdWx0LCBjZWxsKQorICAgIHsKKyAgICAgICAgbGV0IHBy
ZWZpeCA9IFV0aWxzLnN0cmlwRXh0ZW5zaW9uKHRlc3RSZXN1bHQubmFtZSk7CisgICAgICAgIGNl
bGwuaW5uZXJIVE1MICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwg
Jy1leHBlY3RlZC53YXYnLCAnZXhwZWN0ZWQgYXVkaW8nKQorICAgICAgICAgICAgKyBUZXN0UmVz
dWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayhwcmVmaXgsICctYWN0dWFsLndhdicsICdhY3R1YWwg
YXVkaW8nKQorICAgICAgICAgICAgKyBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayhw
cmVmaXgsICctZGlmZi50eHQnLCAndGV4dHVhbCBkaWZmJyk7CisgICAgfQorICAgIAorICAgIGFw
cGVuZEFjdHVhbE9ubHlMaW5rcyh0ZXN0UmVzdWx0LCBjZWxsKQorICAgIHsKKyAgICAgICAgbGV0
IHByZWZpeCA9IFV0aWxzLnN0cmlwRXh0ZW5zaW9uKHRlc3RSZXN1bHQubmFtZSk7CisgICAgICAg
IGlmICh0ZXN0UmVzdWx0LmlzTWlzc2luZ0F1ZGlvKCkpCisgICAgICAgICAgICBjZWxsLmlubmVy
SFRNTCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayhwcmVmaXgsICctYWN0dWFs
LndhdicsICdhdWRpbyByZXN1bHQnKTsKKworICAgICAgICBpZiAodGVzdFJlc3VsdC5pc01pc3Np
bmdUZXh0KCkpCisgICAgICAgICAgICBjZWxsLmlubmVySFRNTCArPSBUZXN0UmVzdWx0c0NvbnRy
b2xsZXIucmVzdWx0TGluayhwcmVmaXgsICctYWN0dWFsLnR4dCcsICdyZXN1bHQnKTsKKyAgICB9
CisKKyAgICBpbWFnZVJlc3VsdExpbmtzKHRlc3RSZXN1bHQsIHRlc3RQcmVmaXgsIHJlc3VsdFRv
a2VuKQorICAgIHsKKyAgICAgICAgbGV0IHJlc3VsdCA9ICcnOworICAgICAgICBpZiAocmVzdWx0
VG9rZW4uaW5kZXhPZignSU1BR0UnKSAhPSAtMSkgeworICAgICAgICAgICAgbGV0IHRlc3RFeHRl
bnNpb24gPSBVdGlscy5zcGxpdEV4dGVuc2lvbih0ZXN0UmVzdWx0Lm5hbWUpWzFdOworCisgICAg
ICAgICAgICBpZiAodGVzdFJlc3VsdC5pc01pc21hdGNoUmVmVGVzdCgpKSB7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHRoaXMuX3Jl
c3VsdHNDb250cm9sbGVyLmxheW91dFRlc3RzQmFzZVBhdGgoKSArIHRlc3RQcmVmaXgsICctZXhw
ZWN0ZWQtbWlzbWF0Y2guJyArIHRlc3RFeHRlbnNpb24sICdyZWYgbWlzbWF0Y2gnKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQgKz0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsodGVz
dFByZWZpeCwgJy1hY3R1YWwucG5nJywgJ2FjdHVhbCcpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAodGVzdFJlc3VsdC5pc01hdGNoUmVmVGVzdCgpKQorICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgKz0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmso
dGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIubGF5b3V0VGVzdHNCYXNlUGF0aCgpICsgdGVzdFByZWZp
eCwgJy1leHBlY3RlZC4nICsgdGVzdEV4dGVuc2lvbiwgJ3JlZmVyZW5jZScpOworCisgICAgICAg
ICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHNDb250cm9sbGVyLnNob3VsZFRvZ2dsZUltYWdlcykK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1
bHRMaW5rKHRlc3RQcmVmaXgsICctZGlmZnMuaHRtbCcsICdpbWFnZXMnKTsKKyAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFRlc3RSZXN1bHRzQ29u
dHJvbGxlci5yZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctZXhwZWN0ZWQucG5nJywgJ2V4cGVjdGVk
Jyk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIu
cmVzdWx0TGluayh0ZXN0UHJlZml4LCAnLWFjdHVhbC5wbmcnLCAnYWN0dWFsJyk7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGV0IGRpZmYgPSB0ZXN0UmVzdWx0LmluZm8u
aW1hZ2VfZGlmZl9wZXJjZW50OworICAgICAgICAgICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0
c0NvbnRyb2xsZXIucmVzdWx0TGluayh0ZXN0UHJlZml4LCAnLWRpZmYucG5nJywgJ2RpZmYgKCcg
KyBkaWZmICsgJyUpJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGlmICh0ZXN0UmVzdWx0Lmhhc01pc3NpbmdSZXN1bHQoKSAmJiB0ZXN0UmVzdWx0LmlzTWlz
c2luZ0ltYWdlKCkpCisgICAgICAgICAgICByZXN1bHQgKz0gVGVzdFJlc3VsdHNDb250cm9sbGVy
LnJlc3VsdExpbmsodGVzdFByZWZpeCwgJy1hY3R1YWwucG5nJywgJ3BuZyByZXN1bHQnKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfTsKKworY2xhc3MgRmFpbGlu
Z1Rlc3RzU2VjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBGYWlsdXJlc1NlY3Rpb25CdWlsZGVyIHsKKyAg
ICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnVGVzdHMgdGhhdCBmYWlsZWQgdGV4dC9waXhlbC9h
dWRpbyBkaWZmJzsgfQorfTsKKworY2xhc3MgVGVzdHNXaXRoTWlzc2luZ1Jlc3VsdHNTZWN0aW9u
QnVpbGRlciBleHRlbmRzIEZhaWx1cmVzU2VjdGlvbkJ1aWxkZXIgeworICAgIHNlY3Rpb25UaXRs
ZSgpIHsgcmV0dXJuICdUZXN0cyB0aGF0IGhhZCBubyBleHBlY3RlZCByZXN1bHRzIChwcm9iYWJs
eSBuZXcpJzsgfQorCisgICAgcm93c0FyZUV4cGFuZGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK307CisKK2NsYXNzIEZsYWt5UGFzc1Rlc3RzU2VjdGlvbkJ1aWxk
ZXIgZXh0ZW5kcyBGYWlsdXJlc1NlY3Rpb25CdWlsZGVyIHsKKyAgICBzZWN0aW9uVGl0bGUoKSB7
IHJldHVybiAnRmxha3kgdGVzdHMgKGZhaWxlZCB0aGUgZmlyc3QgcnVuIGFuZCBwYXNzZWQgb24g
cmV0cnkpJzsgfQorfTsKKworY2xhc3MgVW5leHBlY3RlZFBhc3NUZXN0c1NlY3Rpb25CdWlsZGVy
IGV4dGVuZHMgU2VjdGlvbkJ1aWxkZXIgeworICAgIHNlY3Rpb25UaXRsZSgpIHsgcmV0dXJuICdU
ZXN0cyBleHBlY3RlZCB0byBmYWlsIGJ1dCBwYXNzZWQnOyB9CisKKyAgICBhZGRUYWJsZUhlYWRl
cigpCisgICAgeworICAgICAgICBsZXQgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dGhlYWQnKTsKKyAgICAgICAgaGVhZGVyLmlubmVySFRNTCA9ICc8dGg+dGVzdDwvdGg+PHRoPmV4
cGVjdGVkIGZhaWx1cmU8L3RoPjx0aD5oaXN0b3J5PC90aD4nOworICAgICAgICB0aGlzLl90YWJs
ZS5hcHBlbmRDaGlsZChoZWFkZXIpOworICAgIH0KKyAgICAKKyAgICBmaWxsVGVzdFJlc3VsdENl
bGwodGVzdFJlc3VsdCwgY2VsbCkKKyAgICB7CisgICAgICAgIGNlbGwuaW5uZXJIVE1MID0gdGVz
dFJlc3VsdC5pbmZvLmV4cGVjdGVkOworICAgIH0KKworICAgIHJvd3NBcmVFeHBhbmRhYmxlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCitjbGFzcyBUZXN0c1dp
dGhTdGRFcnJTZWN0aW9uQnVpbGRlciBleHRlbmRzIFNlY3Rpb25CdWlsZGVyIHsKKyAgICBzZWN0
aW9uVGl0bGUoKSB7IHJldHVybiAnVGVzdHMgdGhhdCBoYWQgc3RkZXJyIG91dHB1dCc7IH0KKyAg
ICBoaWRlV2hlblNob3dpbmdVbmV4cGVjdGVkUmVzdWx0c09ubHkoKSB7IHJldHVybiBmYWxzZTsg
fQorCisgICAgZmlsbFRlc3RSZXN1bHRDZWxsKHRlc3RSZXN1bHQsIGNlbGwpCisgICAgeworICAg
ICAgICBjZWxsLmlubmVySFRNTCA9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKFV0
aWxzLnN0cmlwRXh0ZW5zaW9uKHRlc3RSZXN1bHQubmFtZSksICctc3RkZXJyLnR4dCcsICdzdGRl
cnInKTsKKyAgICB9Cit9OworCitjbGFzcyBUaW1lZE91dFRlc3RzU2VjdGlvbkJ1aWxkZXIgZXh0
ZW5kcyBTZWN0aW9uQnVpbGRlciB7CisgICAgc2VjdGlvblRpdGxlKCkgeyByZXR1cm4gJ1Rlc3Rz
IHRoYXQgdGltZWQgb3V0JzsgfQorCisgICAgZmlsbFRlc3RSZXN1bHRDZWxsKHRlc3RSZXN1bHQs
IGNlbGwpCisgICAgeworICAgICAgICAvLyBGSVhNRTogb25seSBpbmNsdWRlIHRpbWVvdXQgYWN0
dWFsL2RpZmYgcmVzdWx0cyBoZXJlIGlmIHdlIGFjdHVhbGx5IHNwaXQgb3V0IHJlc3VsdHMgZm9y
IHRpbWVvdXQgdGVzdHMuCisgICAgICAgIGNlbGwuaW5uZXJIVE1MID0gdGhpcy5fcmVzdWx0c0Nv
bnRyb2xsZXIudGV4dFJlc3VsdExpbmtzKFV0aWxzLnN0cmlwRXh0ZW5zaW9uKHRlc3RSZXN1bHQu
bmFtZSkpOworICAgIH0KK307CisKK2NsYXNzIENyYXNoaW5nVGVzdHNTZWN0aW9uQnVpbGRlciBl
eHRlbmRzIFNlY3Rpb25CdWlsZGVyIHsKKyAgICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnVGVz
dHMgdGhhdCBjcmFzaGVkJzsgfQorCisgICAgZmlsbFRlc3RSZXN1bHRDZWxsKHRlc3RSZXN1bHQs
IGNlbGwpCisgICAgeworICAgICAgICBjZWxsLmlubmVySFRNTCA9IFRlc3RSZXN1bHRzQ29udHJv
bGxlci5yZXN1bHRMaW5rKFV0aWxzLnN0cmlwRXh0ZW5zaW9uKHRlc3RSZXN1bHQubmFtZSksICct
Y3Jhc2gtbG9nLnR4dCcsICdjcmFzaCBsb2cnKQorICAgICAgICAgICAgICAgICAgICAgICArIFRl
c3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKFV0aWxzLnN0cmlwRXh0ZW5zaW9uKHRlc3RS
ZXN1bHQubmFtZSksICctc2FtcGxlLnR4dCcsICdzYW1wbGUnKTsKKyAgICB9Cit9OworCitjbGFz
cyBPdGhlckNyYXNoZXNTZWN0aW9uQnVpbGRlciBleHRlbmRzIFNlY3Rpb25CdWlsZGVyIHsKKyAg
ICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnT3RoZXIgY3Jhc2hlcyc7IH0KKyAgICBmaWxsVGVz
dFJlc3VsdENlbGwodGVzdFJlc3VsdCwgY2VsbCkKKyAgICB7CisgICAgICAgIGNlbGwuaW5uZXJI
VE1MID0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsoVXRpbHMuc3RyaXBFeHRlbnNp
b24odGVzdFJlc3VsdC5uYW1lKSwgJy1jcmFzaC1sb2cudHh0JywgJ2NyYXNoIGxvZycpOworICAg
IH0KKworICAgIGNyZWF0ZUhpc3RvcnlDZWxsKHRlc3RSZXN1bHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBsaW5raWZ5VGVzdE5hbWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK2NsYXNzIFBpeGVsWm9vbWVyIHsKKyAgICBj
b25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICB0aGlzLnNob3dPbkRlbGF5ID0gdHJ1ZTsKKyAg
ICAgICAgdGhpcy5fem9vbUZhY3RvciA9IDY7CisKKyAgICAgICAgdGhpcy5fcmVzdWx0V2lkdGgg
PSA4MDA7CisgICAgICAgIHRoaXMuX3Jlc3VsdEhlaWdodCA9IDYwMDsKKyAgICAgICAgCisgICAg
ICAgIHRoaXMuX3BlcmNlbnRYID0gMDsKKyAgICAgICAgdGhpcy5fcGVyY2VudFkgPSAwOworCisg
ICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMsIGZhbHNl
KTsKKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCB0aGlzLCBm
YWxzZSk7CisgICAgfQorCisgICAgX3pvb21lZFJlc3VsdFdpZHRoKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl9yZXN1bHRXaWR0aCAqIHRoaXMuX3pvb21GYWN0b3I7CisgICAgfQorICAg
IAorICAgIF96b29tZWRSZXN1bHRIZWlnaHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc3VsdEhlaWdodCAqIHRoaXMuX3pvb21GYWN0b3I7CisgICAgfQorICAgIAorICAgIF96b29t
SW1hZ2VDb250YWluZXIodXJsKQorICAgIHsKKyAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lID0g
J3pvb20taW1hZ2UtY29udGFpbmVyJzsKKworICAgICAgICBsZXQgdGl0bGUgPSB1cmwubWF0Y2go
L1wtKFteXC1dKilcLnBuZy8pWzFdOworICAgIAorICAgICAgICBsZXQgbGFiZWwgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgbGFiZWwuY2xhc3NOYW1lID0gJ2xhYmVs
JzsKKyAgICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0
bGUpKTsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGxhYmVsKTsKKyAgICAKKyAgICAg
ICAgbGV0IGltYWdlQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGltYWdlQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdzY2FsZWQtaW1hZ2UtY29udGFpbmVy
JzsKKyAgICAKKyAgICAgICAgbGV0IGltYWdlID0gbmV3IEltYWdlKCk7CisgICAgICAgIGltYWdl
LnNyYyA9IHVybDsKKyAgICAgICAgaW1hZ2Uuc3R5bGUud2lkdGggPSB0aGlzLl96b29tZWRSZXN1
bHRXaWR0aCgpICsgJ3B4JzsKKyAgICAgICAgaW1hZ2Uuc3R5bGUuaGVpZ2h0ID0gdGhpcy5fem9v
bWVkUmVzdWx0SGVpZ2h0KCkgKyAncHgnOworICAgICAgICBpbWFnZS5zdHlsZS5ib3JkZXIgPSAn
MXB4IHNvbGlkIGJsYWNrJzsKKyAgICAgICAgaW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQoaW1h
Z2UpOworICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW1hZ2VDb250YWluZXIpOworICAg
IAorICAgICAgICByZXR1cm4gY29udGFpbmVyOworICAgIH0KKworICAgIF9jcmVhdGVDb250YWlu
ZXIoZSkKKyAgICB7CisgICAgICAgIGxldCB0Ym9keSA9IFV0aWxzLnBhcmVudE9mVHlwZShlLnRh
cmdldCwgJ3Rib2R5Jyk7CisgICAgICAgIGxldCByb3cgPSB0Ym9keS5xdWVyeVNlbGVjdG9yKCd0
cicpOworICAgICAgICBsZXQgaW1hZ2VEaWZmTGlua3MgPSByb3cucXVlcnlTZWxlY3RvckFsbCgn
YVtocmVmJD0iLnBuZyJdJyk7CisgICAgCisgICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdw
aXhlbC16b29tLWNvbnRhaW5lcic7CisgICAgCisgICAgICAgIGxldCBodG1sID0gJyc7CisgICAg
CisgICAgICAgIGxldCB0b2dnbGluZ0ltYWdlTGluayA9IHJvdy5xdWVyeVNlbGVjdG9yKCdhW2hy
ZWYkPSItZGlmZnMuaHRtbCJdJyk7CisgICAgICAgIGlmICh0b2dnbGluZ0ltYWdlTGluaykgewor
ICAgICAgICAgICAgbGV0IHByZWZpeCA9IHRvZ2dsaW5nSW1hZ2VMaW5rLmdldEF0dHJpYnV0ZSgn
ZGF0YS1wcmVmaXgnKTsKKyAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl96
b29tSW1hZ2VDb250YWluZXIocHJlZml4ICsgJy1leHBlY3RlZC5wbmcnKSk7CisgICAgICAgICAg
ICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fem9vbUltYWdlQ29udGFpbmVyKHByZWZpeCAr
ICctYWN0dWFsLnBuZycpKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBmb3IgKGxldCBsaW5r
IG9mIGltYWdlRGlmZkxpbmtzKQorICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRo
aXMuX3pvb21JbWFnZUNvbnRhaW5lcihsaW5rLmhyZWYpKTsKKworICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisgICAgICAgIHRoaXMuX2RyYXdBbGwoKTsKKyAg
ICB9CisKKyAgICBfZHJhdyhpbWFnZUNvbnRhaW5lcikKKyAgICB7CisgICAgICAgIGxldCBpbWFn
ZSA9IGltYWdlQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpOworICAgICAgICBsZXQgY29u
dGFpbmVyQm91bmRzID0gaW1hZ2VDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cisg
ICAgICAgIGltYWdlLnN0eWxlLmxlZnQgPSAoY29udGFpbmVyQm91bmRzLndpZHRoIC8gMiAtIHRo
aXMuX3BlcmNlbnRYICogdGhpcy5fem9vbWVkUmVzdWx0V2lkdGgoKSkgKyAncHgnOworICAgICAg
ICBpbWFnZS5zdHlsZS50b3AgPSAoY29udGFpbmVyQm91bmRzLmhlaWdodCAvIDIgLSB0aGlzLl9w
ZXJjZW50WSAqIHRoaXMuX3pvb21lZFJlc3VsdEhlaWdodCgpKSArICdweCc7CisgICAgfQorCisg
ICAgX2RyYXdBbGwoKQorICAgIHsKKyAgICAgICAgVXRpbHMuZm9yRWFjaChkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCcucGl4ZWwtem9vbS1jb250YWluZXIgLnNjYWxlZC1pbWFnZS1jb250YWlu
ZXInKSwgZWxlbWVudCA9PiB7IHRoaXMuX2RyYXcoZWxlbWVudCkgfSk7CisgICAgfQorICAgIAor
ICAgIGhhbmRsZUV2ZW50KGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0g
J21vdXNlbW92ZScpIHsKKyAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdXNlTW92ZShldmVudCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXZlbnQudHlw
ZSA9PSAnbW91c2VvdXQnKSB7CisgICAgICAgICAgICB0aGlzLl9oYW5kbGVNb3VzZU91dChldmVu
dCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfaGFuZGxl
TW91c2VPdXQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAm
JiBldmVudC5yZWxhdGVkVGFyZ2V0LnRhZ05hbWUgIT0gJ0lGUkFNRScpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgLy8gSWYgZS5yZWxhdGVkVGFyZ2V0IGlzIG51bGwsIHdlJ3ZlIG1v
dXNlZCBvdXQgb2YgdGhlIGRvY3VtZW50LgorICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcignLnBpeGVsLXpvb20tY29udGFpbmVyJyk7CisgICAgICAgIGlmIChj
b250YWluZXIpCisgICAgICAgICAgICBjb250YWluZXIucmVtb3ZlKCk7CisgICAgfQorCisgICAg
X2hhbmRsZU1vdXNlTW92ZShldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9tb3VzZU1v
dmVUaW1lb3V0KSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VNb3ZlVGlt
ZW91dCk7CisgICAgICAgICAgICB0aGlzLl9tb3VzZU1vdmVUaW1lb3V0ID0gMDsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChVdGlscy5wYXJlbnRPZlR5cGUoZXZlbnQudGFyZ2V0LCAnLnBpeGVs
LXpvb20tY29udGFpbmVyJykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGNv
bnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5waXhlbC16b29tLWNvbnRhaW5lcicp
OworICAgIAorICAgICAgICBsZXQgcmVzdWx0Q29udGFpbmVyID0gKGV2ZW50LnRhcmdldC5jbGFz
c05hbWUgPT0gJ3Jlc3VsdC1jb250YWluZXInKSA/IGV2ZW50LnRhcmdldCA6IFV0aWxzLnBhcmVu
dE9mVHlwZShldmVudC50YXJnZXQsICcucmVzdWx0LWNvbnRhaW5lcicpOworICAgICAgICBpZiAo
IXJlc3VsdENvbnRhaW5lciB8fCAhcmVzdWx0Q29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2ltZycp
KSB7CisgICAgICAgICAgICBpZiAoY29udGFpbmVyKQorICAgICAgICAgICAgICAgIGNvbnRhaW5l
ci5yZW1vdmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxl
dCB0YXJnZXRMb2NhdGlvbiA9IGV2ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsK
KyAgICAgICAgdGhpcy5fcGVyY2VudFggPSAoZXZlbnQuY2xpZW50WCAtIHRhcmdldExvY2F0aW9u
LmxlZnQpIC8gdGFyZ2V0TG9jYXRpb24ud2lkdGg7CisgICAgICAgIHRoaXMuX3BlcmNlbnRZID0g
KGV2ZW50LmNsaWVudFkgLSB0YXJnZXRMb2NhdGlvbi50b3ApIC8gdGFyZ2V0TG9jYXRpb24uaGVp
Z2h0OworCisgICAgICAgIGlmICghY29udGFpbmVyKSB7CisgICAgICAgICAgICBpZiAodGhpcy5z
aG93T25EZWxheSkgeworICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlTW92ZVRpbWVvdXQgPSBz
ZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29udGFp
bmVyKGV2ZW50KTsKKyAgICAgICAgICAgICAgICB9LCA0MDApOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29udGFpbmVy
KGV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAorICAgICAgICB0
aGlzLl9kcmF3QWxsKCk7CisgICAgfQorfTsKKworY2xhc3MgVGFibGVTb3J0ZXIKK3sKKyAgICBz
dGF0aWMgX2ZvcndhcmRBcnJvdygpCisgICAgeworICAgICAgICByZXR1cm4gJzxzdmcgc3R5bGU9
IndpZHRoOjEwcHg7aGVpZ2h0OjEwcHgiPjxwb2x5Z29uIHBvaW50cz0iMCwwIDEwLDAgNSwxMCIg
c3R5bGU9ImZpbGw6I2NjYyI+PC9zdmc+JzsKKyAgICB9CisKKyAgICBzdGF0aWMgX2JhY2t3YXJk
QXJyb3coKQorICAgIHsKKyAgICAgICAgcmV0dXJuICc8c3ZnIHN0eWxlPSJ3aWR0aDoxMHB4O2hl
aWdodDoxMHB4Ij48cG9seWdvbiBwb2ludHM9IjAsMTAgMTAsMTAgNSwwIiBzdHlsZT0iZmlsbDoj
Y2NjIj48L3N2Zz4nOworICAgIH0KKworICAgIHN0YXRpYyBfc29ydGVkQ29udGVudHMoaGVhZGVy
LCBhcnJvdykKKyAgICB7CisgICAgICAgIHJldHVybiBhcnJvdyArICcgJyArIFV0aWxzLnRyaW0o
aGVhZGVyLnRleHRDb250ZW50KSArICcgJyArIGFycm93OworICAgIH0KKworICAgIHN0YXRpYyBf
dXBkYXRlSGVhZGVyQ2xhc3NOYW1lcyhuZXdIZWFkZXIpCisgICAgeworICAgICAgICBsZXQgc29y
dEhlYWRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zb3J0SGVhZGVyJyk7CisgICAgICAg
IGlmIChzb3J0SGVhZGVyKSB7CisgICAgICAgICAgICBpZiAoc29ydEhlYWRlciA9PSBuZXdIZWFk
ZXIpIHsKKyAgICAgICAgICAgICAgICBsZXQgaXNBbHJlYWR5UmV2ZXJzZWQgPSBzb3J0SGVhZGVy
LmNsYXNzTGlzdC5jb250YWlucygncmV2ZXJzZWQnKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNB
bHJlYWR5UmV2ZXJzZWQpCisgICAgICAgICAgICAgICAgICAgIHNvcnRIZWFkZXIuY2xhc3NMaXN0
LnJlbW92ZSgncmV2ZXJzZWQnKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHNvcnRIZWFkZXIuY2xhc3NMaXN0LmFkZCgncmV2ZXJzZWQnKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc29ydEhlYWRlci50ZXh0Q29udGVudCA9IHNvcnRI
ZWFkZXIudGV4dENvbnRlbnQ7CisgICAgICAgICAgICAgICAgc29ydEhlYWRlci5jbGFzc0xpc3Qu
cmVtb3ZlKCdzb3J0SGVhZGVyJyk7CisgICAgICAgICAgICAgICAgc29ydEhlYWRlci5jbGFzc0xp
c3QucmVtb3ZlKCdyZXZlcnNlZCcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgbmV3SGVhZGVyLmNsYXNzTGlzdC5hZGQoJ3NvcnRIZWFkZXInKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgX3RleHRDb250ZW50KHRib2R5Um93LCBjb2x1bW4pCisgICAgeworICAgICAgICByZXR1
cm4gdGJvZHlSb3cucXVlcnlTZWxlY3RvckFsbCgndGQnKVtjb2x1bW5dLnRleHRDb250ZW50Owor
ICAgIH0KKworICAgIHN0YXRpYyBfc29ydFJvd3MobmV3SGVhZGVyLCByZXZlcnNlZCkKKyAgICB7
CisgICAgICAgIGxldCB0ZXN0c1RhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dHMtdGFibGUnKTsKKyAgICAgICAgbGV0IGhlYWRlcnMgPSBVdGlscy50b0FycmF5KHRlc3RzVGFi
bGUucXVlcnlTZWxlY3RvckFsbCgndGgnKSk7CisgICAgICAgIGxldCBzb3J0Q29sdW1uID0gaGVh
ZGVycy5pbmRleE9mKG5ld0hlYWRlcik7CisKKyAgICAgICAgbGV0IHJvd3MgPSBVdGlscy50b0Fy
cmF5KHRlc3RzVGFibGUucXVlcnlTZWxlY3RvckFsbCgndGJvZHknKSk7CisKKyAgICAgICAgcm93
cy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgbmVlZCB0byBzdXBw
b3J0IGxleGljb2dyYXBoaWMgc29ydCBmb3Igbm93LgorICAgICAgICAgICAgbGV0IGFUZXh0ID0g
VGFibGVTb3J0ZXIuX3RleHRDb250ZW50KGEsIHNvcnRDb2x1bW4pOworICAgICAgICAgICAgbGV0
IGJUZXh0ID0gVGFibGVTb3J0ZXIuX3RleHRDb250ZW50KGIsIHNvcnRDb2x1bW4pOworICAgICAg
ICAKKyAgICAgICAgICAgIC8vIEZvcndhcmQgc29ydCBlcXVhbCB2YWx1ZXMgYnkgdGVzdCBuYW1l
LgorICAgICAgICAgICAgaWYgKHNvcnRDb2x1bW4gJiYgYVRleHQgPT0gYlRleHQpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgYVRlc3ROYW1lID0gVGFibGVTb3J0ZXIuX3RleHRDb250ZW50KGEsIDAp
OworICAgICAgICAgICAgICAgIGxldCBiVGVzdE5hbWUgPSBUYWJsZVNvcnRlci5fdGV4dENvbnRl
bnQoYiwgMCk7CisgICAgICAgICAgICAgICAgaWYgKGFUZXN0TmFtZSA9PSBiVGVzdE5hbWUpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBhVGVz
dE5hbWUgPCBiVGVzdE5hbWUgPyAtMSA6IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChyZXZlcnNlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYVRleHQgPCBiVGV4dCA/IDEg
OiAtMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gYVRleHQgPCBi
VGV4dCA/IC0xIDogMTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZm9yIChsZXQgcm93IG9mIHJv
d3MpCisgICAgICAgICAgICB0ZXN0c1RhYmxlLmFwcGVuZENoaWxkKHJvdyk7CisgICAgfQorCisg
ICAgc3RhdGljIHNvcnRDb2x1bW4oY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgbGV0IG5l
d0hlYWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzLXRhYmxlJykucXVlcnlT
ZWxlY3RvckFsbCgndGgnKVtjb2x1bW5OdW1iZXJdOworICAgICAgICBUYWJsZVNvcnRlci5fc29y
dChuZXdIZWFkZXIpOworICAgIH0KKworICAgIHN0YXRpYyBoYW5kbGVDbGljayhlKQorICAgIHsK
KyAgICAgICAgbGV0IG5ld0hlYWRlciA9IGUudGFyZ2V0OworICAgICAgICBpZiAobmV3SGVhZGVy
LmxvY2FsTmFtZSAhPSAndGgnKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBUYWJsZVNv
cnRlci5fc29ydChuZXdIZWFkZXIpOworICAgIH0KKworICAgIHN0YXRpYyBfc29ydChuZXdIZWFk
ZXIpCisgICAgeworICAgICAgICBUYWJsZVNvcnRlci5fdXBkYXRlSGVhZGVyQ2xhc3NOYW1lcyhu
ZXdIZWFkZXIpOworICAgIAorICAgICAgICBsZXQgcmV2ZXJzZWQgPSBuZXdIZWFkZXIuY2xhc3NM
aXN0LmNvbnRhaW5zKCdyZXZlcnNlZCcpOworICAgICAgICBsZXQgc29ydEFycm93ID0gcmV2ZXJz
ZWQgPyBUYWJsZVNvcnRlci5fYmFja3dhcmRBcnJvdygpIDogVGFibGVTb3J0ZXIuX2ZvcndhcmRB
cnJvdygpOworICAgICAgICBuZXdIZWFkZXIuaW5uZXJIVE1MID0gVGFibGVTb3J0ZXIuX3NvcnRl
ZENvbnRlbnRzKG5ld0hlYWRlciwgc29ydEFycm93KTsKKyAgICAKKyAgICAgICAgVGFibGVTb3J0
ZXIuX3NvcnRSb3dzKG5ld0hlYWRlciwgcmV2ZXJzZWQpOworICAgIH0gICAgCit9OworCitjbGFz
cyBPcHRpb25Xcml0ZXIgeworICAgIHN0YXRpYyBzYXZlKCkKKyAgICB7CisgICAgICAgIGxldCBv
cHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGFiZWwgaW5wdXQnKTsKKyAgICAg
ICAgbGV0IGRhdGEgPSB7fTsKKyAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIG9wdGlvbnMpCisg
ICAgICAgICAgICBkYXRhW29wdGlvbi5pZF0gPSBvcHRpb24uY2hlY2tlZDsKKworICAgICAgICB0
cnkgeworICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oT3B0aW9uV3JpdGVyLl9rZXks
IEpTT04uc3RyaW5naWZ5KGRhdGEpKTsKKyAgICAgICAgfSBjYXRjaCAoZXJyKSB7CisgICAgICAg
ICAgICBpZiAoZXJyLm5hbWUgIT0gIlNlY3VyaXR5RXJyb3IiKQorICAgICAgICAgICAgICAgIHRo
cm93IGVycjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBhcHBseSgpCisgICAgewor
ICAgICAgICBsZXQganNvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGpzb24gPSBsb2Nh
bFN0b3JhZ2UuZ2V0SXRlbShPcHRpb25Xcml0ZXIuX2tleSk7CisgICAgICAgIH0gY2F0Y2ggKGVy
cikgeworICAgICAgICAgICBpZiAoZXJyLm5hbWUgIT0gIlNlY3VyaXR5RXJyb3IiKQorICAgICAg
ICAgICAgICB0aHJvdyBlcnI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWpzb24pIHsKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXIudXBkYXRlQWxsT3B0aW9ucygpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKGpzb24pOwor
ICAgICAgICBmb3IgKGxldCBpZCBpbiBkYXRhKSB7CisgICAgICAgICAgICBsZXQgaW5wdXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CisgICAgICAgICAgICBpZiAoaW5wdXQpCisgICAg
ICAgICAgICAgICAgaW5wdXQuY2hlY2tlZCA9IGRhdGFbaWRdOworICAgICAgICB9CisgICAgICAg
IGNvbnRyb2xsZXIudXBkYXRlQWxsT3B0aW9ucygpOworICAgIH0KKworICAgIHN0YXRpYyBnZXQg
X2tleSgpCisgICAgeworICAgICAgICByZXR1cm4gJ3J1bi13ZWJraXQtdGVzdHMtb3B0aW9ucyc7
CisgICAgfQorfTsKKworbGV0IHRlc3RSZXN1bHRzOworZnVuY3Rpb24gQUREX1JFU1VMVFMoaW5w
dXQpCit7CisgICAgdGVzdFJlc3VsdHMgPSBuZXcgVGVzdFJlc3VsdHMoaW5wdXQpOworfQorPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSJmdWxsX3Jlc3VsdHMuanNvbiI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQ+CisKK2NsYXNzIFRlc3ROYXZpZ2F0b3IKK3sKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAg
ICAgICAgdGhpcy5jdXJyZW50VGVzdEluZGV4ID0gLTE7CisgICAgICAgIHRoaXMuZmxhZ2dlZFRl
c3RzID0ge307CisgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXByZXNzJywg
dGhpcywgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBoYW5kbGVFdmVudChldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChldmVudC50eXBlID09ICdrZXlwcmVzcycpIHsKKyAgICAgICAgICAgIHRo
aXMuaGFuZGxlS2V5RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCisgICAgaGFuZGxlS2V5RXZlbnQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAo
ZXZlbnQubWV0YUtleSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5jdHJsS2V5KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHN3aXRjaCAoU3RyaW5nLmZyb21DaGFyQ29kZShldmVu
dC5jaGFyQ29kZSkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgIHRo
aXMuX3Njcm9sbFRvRmlyc3RUZXN0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICdqJzoKKyAgICAgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb05leHRUZXN0KCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdrJzoKKyAgICAgICAg
ICAgICAgICB0aGlzLl9zY3JvbGxUb1ByZXZpb3VzVGVzdCgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAnbCc6CisgICAgICAgICAgICAgICAgdGhpcy5fc2Nyb2xs
VG9MYXN0VGVzdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAn
ZSc6CisgICAgICAgICAgICAgICAgdGhpcy5fZXhwYW5kQ3VycmVudFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgIHRo
aXMuX2NvbGxhcHNlQ3VycmVudFRlc3QoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgJ3QnOgorICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUN1cnJlbnRUZXN0
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAg
ICAgICAgICAgICB0aGlzLl90b2dnbGVDdXJyZW50VGVzdEZsYWdnZWQoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9zY3JvbGxUb0ZpcnN0VGVzdCgp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fc2V0Q3VycmVudFRlc3QoMCkpCisgICAgICAgICAg
ICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRUZXN0KCk7CisgICAgfQorCisgICAgX3Njcm9sbFRvTGFz
dFRlc3QoKQorICAgIHsKKyAgICAgICAgbGV0IGxpbmtzID0gY29udHJvbGxlci52aXNpYmxlVGVz
dHMoKTsKKyAgICAgICAgaWYgKHRoaXMuX3NldEN1cnJlbnRUZXN0KGxpbmtzLmxlbmd0aCAtIDEp
KQorICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9DdXJyZW50VGVzdCgpOworICAgIH0KKworICAg
IF9zY3JvbGxUb05leHRUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUZXN0
SW5kZXggPT0gLTEpCisgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0ZpcnN0VGVzdCgpOworICAg
ICAgICBlbHNlIGlmICh0aGlzLl9zZXRDdXJyZW50VGVzdCh0aGlzLmN1cnJlbnRUZXN0SW5kZXgg
KyAxKSkKKyAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFRlc3QoKTsKKyAgICB9CisK
KyAgICBfc2Nyb2xsVG9QcmV2aW91c1Rlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuY3Vy
cmVudFRlc3RJbmRleCA9PSAtMSkKKyAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvTGFzdFRlc3Qo
KTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fc2V0Q3VycmVudFRlc3QodGhpcy5jdXJyZW50VGVz
dEluZGV4IC0gMSkpCisgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRUZXN0KCk7Cisg
ICAgfQorCisgICAgX2N1cnJlbnRUZXN0TGluaygpCisgICAgeworICAgICAgICBsZXQgbGlua3Mg
PSBjb250cm9sbGVyLnZpc2libGVUZXN0cygpOworICAgICAgICByZXR1cm4gbGlua3NbdGhpcy5j
dXJyZW50VGVzdEluZGV4XTsKKyAgICB9CisKKyAgICBfY3VycmVudFRlc3RFeHBhbmRMaW5rKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGVzdExpbmsoKS5xdWVyeVNlbGVj
dG9yKCcuZXhwYW5kLWJ1dHRvbi10ZXh0Jyk7CisgICAgfQorCisgICAgX2V4cGFuZEN1cnJlbnRU
ZXN0KCkKKyAgICB7CisgICAgICAgIGNvbnRyb2xsZXIuZXhwYW5kRXhwZWN0YXRpb25zKHRoaXMu
X2N1cnJlbnRUZXN0RXhwYW5kTGluaygpKTsKKyAgICB9CisKKyAgICBfY29sbGFwc2VDdXJyZW50
VGVzdCgpCisgICAgeworICAgICAgICBjb250cm9sbGVyLmNvbGxhcHNlRXhwZWN0YXRpb25zKHRo
aXMuX2N1cnJlbnRUZXN0RXhwYW5kTGluaygpKTsKKyAgICB9CisKKyAgICBfdG9nZ2xlQ3VycmVu
dFRlc3QoKQorICAgIHsKKyAgICAgICAgY29udHJvbGxlci50b2dnbGVFeHBlY3RhdGlvbnModGhp
cy5fY3VycmVudFRlc3RFeHBhbmRMaW5rKCkpOworICAgIH0KKworICAgIF90b2dnbGVDdXJyZW50
VGVzdEZsYWdnZWQoKQorICAgIHsKKyAgICAgICAgbGV0IHRlc3RMaW5rID0gdGhpcy5fY3VycmVu
dFRlc3RMaW5rKCk7CisgICAgICAgIHRoaXMuZmxhZ1Rlc3QodGVzdExpbmssICF0ZXN0TGluay5j
bGFzc0xpc3QuY29udGFpbnMoJ2ZsYWdnZWQnKSk7CisgICAgfQorCisgICAgLy8gRklYTUU6IFRl
c3QgbmF2aWdhdG9yIHNob3VsZG4ndCBrbm93IGFueXRoaW5nIGFib3V0IGZsYWdnaW5nLiBJdCBz
aG91bGQgcHJvYmFibHkgY2FsbCBvdXQgdG8gVGVzdEZsYWdnZXIgb3Igc29tZXRoaW5nLgorICAg
IC8vIEZJWE1FOiBCYXRjaCBmbGFnZ2luZyAoYXZvaWQgdXBkYXRlRmxhZ2dlZFRlc3RzIG9uIGVh
Y2ggdGVzdCkuCisgICAgZmxhZ1Rlc3QodGVzdFRib2R5LCBzaG91bGRGbGFnKQorICAgIHsKKyAg
ICAgICAgbGV0IHRlc3ROYW1lID0gdGVzdFRib2R5LnF1ZXJ5U2VsZWN0b3IoJy50ZXN0LWxpbmsn
KS5pbm5lclRleHQ7CisgICAgCisgICAgICAgIGlmIChzaG91bGRGbGFnKSB7CisgICAgICAgICAg
ICB0ZXN0VGJvZHkuY2xhc3NMaXN0LmFkZCgnZmxhZ2dlZCcpOworICAgICAgICAgICAgdGhpcy5m
bGFnZ2VkVGVzdHNbdGVzdE5hbWVdID0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRlc3RUYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdmbGFnZ2VkJyk7CisgICAgICAgICAgICBkZWxl
dGUgdGhpcy5mbGFnZ2VkVGVzdHNbdGVzdE5hbWVdOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy51cGRhdGVGbGFnZ2VkVGVzdHMoKTsKKyAgICB9CisKKyAgICB1cGRhdGVGbGFnZ2VkVGVzdHMo
KQorICAgIHsKKyAgICAgICAgbGV0IGZsYWdnZWRUZXN0VGV4dGJveCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdmbGFnZ2VkLXRlc3RzJyk7CisgICAgICAgIGlmICghZmxhZ2dlZFRlc3RUZXh0
Ym94KSB7CisgICAgICAgICAgICBsZXQgZmxhZ2dlZFRlc3RDb250YWluZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgICAgIGZsYWdnZWRUZXN0Q29udGFpbmVyLmlk
ID0gJ2ZsYWdnZWQtdGVzdC1jb250YWluZXInOworICAgICAgICAgICAgZmxhZ2dlZFRlc3RDb250
YWluZXIuY2xhc3NOYW1lID0gJ2Zsb2F0aW5nLXBhbmVsJzsKKyAgICAgICAgICAgIGZsYWdnZWRU
ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9ICc8aDI+RmxhZ2dlZCBUZXN0czwvaDI+PHByZSBpZD0i
ZmxhZ2dlZC10ZXN0cyIgY29udGVudEVkaXRhYmxlPjwvcHJlPic7CisgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGZsYWdnZWRUZXN0Q29udGFpbmVyKTsKKworICAgICAgICAg
ICAgZmxhZ2dlZFRlc3RUZXh0Ym94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZsYWdnZWQt
dGVzdHMnKTsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBmbGFnZ2VkVGVzdHMgPSBPYmplY3Qu
a2V5cyh0aGlzLmZsYWdnZWRUZXN0cyk7CisgICAgICAgIGZsYWdnZWRUZXN0cy5zb3J0KCk7Cisg
ICAgICAgIGxldCBzZXBhcmF0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndXNlLW5ld2xp
bmVzJykuY2hlY2tlZCA/ICdcbicgOiAnICc7CisgICAgICAgIGZsYWdnZWRUZXN0VGV4dGJveC5p
bm5lckhUTUwgPSBmbGFnZ2VkVGVzdHMuam9pbihzZXBhcmF0b3IpOworICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZmxhZ2dlZC10ZXN0LWNvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkg
PSBmbGFnZ2VkVGVzdHMubGVuZ3RoID8gJycgOiAnbm9uZSc7CisgICAgfQorCisgICAgX3NldEN1
cnJlbnRUZXN0KHRlc3RJbmRleCkKKyAgICB7CisgICAgICAgIGxldCBsaW5rcyA9IGNvbnRyb2xs
ZXIudmlzaWJsZVRlc3RzKCk7CisgICAgICAgIGlmICh0ZXN0SW5kZXggPCAwIHx8IHRlc3RJbmRl
eCA+PSBsaW5rcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
bGV0IGN1cnJlbnRUZXN0ID0gbGlua3NbdGhpcy5jdXJyZW50VGVzdEluZGV4XTsKKyAgICAgICAg
aWYgKGN1cnJlbnRUZXN0KQorICAgICAgICAgICAgY3VycmVudFRlc3QuY2xhc3NMaXN0LnJlbW92
ZSgnY3VycmVudCcpOworCisgICAgICAgIHRoaXMuY3VycmVudFRlc3RJbmRleCA9IHRlc3RJbmRl
eDsKKworICAgICAgICBjdXJyZW50VGVzdCA9IGxpbmtzW3RoaXMuY3VycmVudFRlc3RJbmRleF07
CisgICAgICAgIGN1cnJlbnRUZXN0LmNsYXNzTGlzdC5hZGQoJ2N1cnJlbnQnKTsKKworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBfc2Nyb2xsVG9DdXJyZW50VGVzdCgpCisgICAg
eworICAgICAgICBsZXQgdGFyZ2V0TGluayA9IHRoaXMuX2N1cnJlbnRUZXN0TGluaygpOworICAg
ICAgICBpZiAoIXRhcmdldExpbmspCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0
IHJvd1JlY3QgPSB0YXJnZXRMaW5rLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAv
LyByb3dSZWN0IGlzIGluIGNsaWVudCBjb29yZHMgKGkuZS4gcmVsYXRpdmUgdG8gdmlld3BvcnQp
LCBzbyB3ZSBqdXN0IHdhbnQgdG8gYWRkIGl0cyB0b3AgdG8gdGhlIGN1cnJlbnQgc2Nyb2xsIHBv
c2l0aW9uLgorICAgICAgICBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCArPSBy
b3dSZWN0LnRvcDsKKyAgICB9CisKKyAgICBvbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJlc0NoYW5n
ZWQoKQorICAgIHsKKyAgICAgICAgbGV0IGN1cnJlbnRUZXN0ID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcignLmN1cnJlbnQnKTsKKyAgICAgICAgaWYgKCFjdXJyZW50VGVzdCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAvLyBJZiBvdXIgY3VycmVudFRlc3QgYmVjYW1lIGhpZGRlbiwg
cmVzZXQgdGhlIGN1cnJlbnRUZXN0SW5kZXguCisgICAgICAgIGlmIChjb250cm9sbGVyLm9ubHlT
aG93VW5leHBlY3RlZEZhaWx1cmVzKCkgJiYgY3VycmVudFRlc3QuY2xhc3NMaXN0LmNvbnRhaW5z
KCdleHBlY3RlZCcpKQorICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9GaXJzdFRlc3QoKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBSZWNvbXB1dGUgdGhpcy5jdXJyZW50VGVzdElu
ZGV4CisgICAgICAgICAgICBsZXQgbGlua3MgPSBjb250cm9sbGVyLnZpc2libGVUZXN0cygpOwor
ICAgICAgICAgICAgdGhpcy5jdXJyZW50VGVzdEluZGV4ID0gbGlua3MuaW5kZXhPZihjdXJyZW50
VGVzdCk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24o
ZSkKK3sKKyAgICBpZiAoIVV0aWxzLnBhcmVudE9mVHlwZShlLnRhcmdldCwgJyNvcHRpb25zLW1l
bnUnKSAmJiBlLnRhcmdldC5pZCAhPSAnb3B0aW9ucy1saW5rJykKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ29wdGlvbnMtbWVudScpLmNsYXNzTmFtZSA9ICdoaWRkZW4tbWVudSc7
Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZU1vdXNl
RG93biwgZmFsc2UpOworCitsZXQgY29udHJvbGxlcjsKK2xldCBwaXhlbFpvb21lcjsKK2xldCB0
ZXN0TmF2aWdhdG9yOworCitmdW5jdGlvbiBnZW5lcmF0ZVBhZ2UoKQoreworICAgIGxldCBjb250
YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi1jb250ZW50Jyk7CisKKyAgICBj
b250cm9sbGVyID0gbmV3IFRlc3RSZXN1bHRzQ29udHJvbGxlcihjb250YWluZXIsIHRlc3RSZXN1
bHRzKTsKKyAgICBwaXhlbFpvb21lciA9IG5ldyBQaXhlbFpvb21lcigpOworICAgIHRlc3ROYXZp
Z2F0b3IgPSBuZXcgVGVzdE5hdmlnYXRvcigpOworCisgICAgT3B0aW9uV3JpdGVyLmFwcGx5KCk7
CisKKyAgICBjb25zb2xlLmxvZygicmVuZGVyZWQgdGVzdCByZXN1bHRzIHBhZ2UhIik7Cit9CisK
K3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZ2VuZXJhdGVQYWdlLCBmYWxzZSk7CisK
Kzwvc2NyaXB0PgorPGJvZHk+CisgICAgCisgICAgPGRpdiBjbGFzcz0iY29udGVudC1jb250YWlu
ZXIiPgorICAgICAgICA8ZGl2IGlkPSJ0b29sYmFyIiBjbGFzcz0iZmxvYXRpbmctcGFuZWwiPgor
ICAgICAgICA8ZGl2IGNsYXNzPSJub3RlIj5Vc2UgdGhlIGksIGosIGsgYW5kIGwga2V5cyB0byBu
YXZpZ2F0ZSwgZSwgYyB0byBleHBhbmQgYW5kIGNvbGxhcHNlLCBhbmQgZiB0byBmbGFnPC9kaXY+
CisgICAgICAgIDxhIGNsYXNzPSJjbGlja2FibGUiIG9uY2xpY2s9ImNvbnRyb2xsZXIuZXhwYW5k
QWxsRXhwZWN0YXRpb25zKCkiPmV4cGFuZCBhbGw8L2E+CisgICAgICAgIDxhIGNsYXNzPSJjbGlj
a2FibGUiIG9uY2xpY2s9ImNvbnRyb2xsZXIuY29sbGFwc2VBbGxFeHBlY3RhdGlvbnMoKSI+Y29s
bGFwc2UgYWxsPC9hPgorICAgICAgICA8YSBjbGFzcz0iY2xpY2thYmxlIiBpZD1vcHRpb25zLWxp
bmsgb25jbGljaz0iY29udHJvbGxlci50b2dnbGVPcHRpb25zTWVudSgpIj5vcHRpb25zPC9hPgor
ICAgICAgICA8ZGl2IGlkPSJvcHRpb25zLW1lbnUiIGNsYXNzPSJoaWRkZW4tbWVudSI+CisgICAg
ICAgICAgICA8bGFiZWw+PGlucHV0IGlkPSJ1bmV4cGVjdGVkLXJlc3VsdHMiIHR5cGU9ImNoZWNr
Ym94IiBjaGVja2VkIG9uY2hhbmdlPSJjb250cm9sbGVyLmhhbmRsZVVuZXhwZWN0ZWRSZXN1bHRz
Q2hhbmdlKCkiPk9ubHkgdW5leHBlY3RlZCByZXN1bHRzPC9sYWJlbD4KKyAgICAgICAgICAgIDxs
YWJlbD48aW5wdXQgaWQ9InRvZ2dsZS1pbWFnZXMiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkIG9u
Y2hhbmdlPSJjb250cm9sbGVyLmhhbmRsZVRvZ2dsZUltYWdlc0NoYW5nZSgpIj5Ub2dnbGUgaW1h
Z2VzPC9sYWJlbD4KKyAgICAgICAgICAgIDxsYWJlbCB0aXRsZT0iVXNlIG5ld2xpbmVzIGluc3Rl
YWQgb2Ygc3BhY2VzIHRvIHNlcGFyYXRlIGZsYWdnZWQgdGVzdHMiPjxpbnB1dCBpZD0idXNlLW5l
d2xpbmVzIiB0eXBlPSJjaGVja2JveCIgY2hlY2tlZCBvbmNoYW5nZT0iY29udHJvbGxlci5oYW5k
bGVUb2dnbGVVc2VOZXdsaW5lcygpIj5Vc2UgbmV3bGluZXMgaW4gZmxhZ2dlZCBsaXN0PC9sYWJl
bD4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKzxkaXYgaWQ9Im1haW4tY29udGVudCI+
PC9kaXY+CisKKzwvYm9keT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjcyMDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDIxLTAxLTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgorCisgICAgICAgIExhemlseSBjcmVhdGUgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRz
IHNvIHdlIGRvbid0IG1pc3Rha2VubHkgdGhpbmsgd2UgaGF2ZSBhIGZyYW1lIHdoZW4gcmUtYXNz
b2NpYXRpbmcgYSBkb2N1bWVudCB0byBhIGdpdmVuIGNhY2hlZCBmcmFtZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDk4CisgICAgICAgIDxyZGFy
Oi8vNzI4OTQ0NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2Fz
ZTo6Y29tbWl0KToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAgICAgIChK
U0M6OldhdGNocG9pbnRTZXQ6OmlzU3RpbGxWYWxpZE9uSlNUaHJlYWQgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJvcGVydHlTbG90Lmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6
c2V0V2F0Y2hwb2ludFNldCk6CisKIDIwMjEtMDEtMjkgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgU291cmNlUGFyc2VNb2RlIHNob3VsZCBiZSBhIG1l
bWJlciBvZiB0aGUgSlNDOjpQYXJzZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI3MTk4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTky
LDIzICsxOTIsMjcgQEAgVmVjdG9yPFdhdGNocG9pbnRTZXQqLCAyPiBBY2Nlc3NDYXNlOjpjbwog
CiAgICAgVmVjdG9yPFdhdGNocG9pbnRTZXQqLCAyPiByZXN1bHQ7CiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1cmUoKTsKKyAgICBhdXRvIGFwcGVuZCA9IFsmXSAoYXV0
byogc2V0KSB7CisgICAgICAgIEFTU0VSVChzZXQtPmlzU3RpbGxWYWxpZCgpKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChzZXQpOworICAgIH07CiAKICAgICBpZiAobV9pZGVudGlmaWVyKSB7CiAg
ICAgICAgIGlmICgoc3RydWN0dXJlICYmIHN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0
Y2hwb2ludCgpKQogICAgICAgICAgICAgfHwgbV9jb25kaXRpb25TZXQubmVlZEltcHVyZVByb3Bl
cnR5V2F0Y2hwb2ludCgpCiAgICAgICAgICAgICB8fCAobV9wb2x5UHJvdG9BY2Nlc3NDaGFpbiAm
JiBtX3BvbHlQcm90b0FjY2Vzc0NoYWluLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KHZt
KSkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHZtLmVuc3VyZVdhdGNocG9pbnRTZXRGb3JJ
bXB1cmVQcm9wZXJ0eShtX2lkZW50aWZpZXIudWlkKCkpKTsKKyAgICAgICAgICAgIGFwcGVuZCh2
bS5lbnN1cmVXYXRjaHBvaW50U2V0Rm9ySW1wdXJlUHJvcGVydHkobV9pZGVudGlmaWVyLnVpZCgp
KSk7CiAgICAgfQogCiAgICAgaWYgKGFkZGl0aW9uYWxTZXQoKSkKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChhZGRpdGlvbmFsU2V0KCkpOworICAgICAgICBhcHBlbmQoYWRkaXRpb25hbFNldCgpKTsK
IAogICAgIGlmIChzdHJ1Y3R1cmUKICAgICAgICAgJiYgc3RydWN0dXJlLT5oYXNSYXJlRGF0YSgp
CiAgICAgICAgICYmIHN0cnVjdHVyZS0+cmFyZURhdGEoKS0+aGFzU2hhcmVkUG9seVByb3RvV2F0
Y2hwb2ludCgpCiAgICAgICAgICYmIHN0cnVjdHVyZS0+cmFyZURhdGEoKS0+c2hhcmVkUG9seVBy
b3RvV2F0Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBXYXRjaHBvaW50U2V0
KiBzZXQgPSBzdHJ1Y3R1cmUtPnJhcmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQo
KS0+aW5mbGF0ZSgpOwotICAgICAgICByZXN1bHQuYXBwZW5kKHNldCk7CisgICAgICAgIGFwcGVu
ZChzZXQpOwogICAgIH0KIAogICAgIG1fc3RhdGUgPSBDb21taXR0ZWQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHJldmlzaW9uIDI3MTk4OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyNCw2ICsyMjQsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IHN0YXRlKCkgIT0gSXNJbnZhbGlkYXRlZDsKICAgICB9CisgICAgLy8gRmFzdCB3YXkgb2YgdGVz
dGluZyBpc1N0aWxsVmFsaWQoKSwgd2hpY2ggb25seSB3b3JrcyBmcm9tIHRoZSBtYWluIHRocmVh
ZC4KKyAgICBib29sIGlzU3RpbGxWYWxpZE9uSlNUaHJlYWQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0YXRlT25KU1RocmVhZCgpICE9IElzSW52YWxpZGF0ZWQ7CisgICAgfQogICAg
IC8vIExpa2UgaXNTdGlsbFZhbGlkKCksIG1heSBiZSBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVh
ZC4KICAgICBib29sIGhhc0JlZW5JbnZhbGlkYXRlZCgpIGNvbnN0IHsgcmV0dXJuICFpc1N0aWxs
VmFsaWQoKTsgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlTbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgJKHJldmlzaW9uIDI3MTk4OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNiArMzcwLDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRXYXRjaHBvaW50U2V0KFdhdGNocG9pbnRTZXQmIHNl
dCkKICAgICB7CisgICAgICAgIEFTU0VSVChzZXQuaXNTdGlsbFZhbGlkKCkpOwogICAgICAgICBt
X3dhdGNocG9pbnRTZXQgPSAmc2V0OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjcxOTg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMjEtMDEtMjkgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTGF6aWx5IGNyZWF0ZSBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMgc28gd2Ug
ZG9uJ3QgbWlzdGFrZW5seSB0aGluayB3ZSBoYXZlIGEgZnJhbWUgd2hlbiByZS1hc3NvY2lhdGlu
ZyBhIGRvY3VtZW50IHRvIGEgZ2l2ZW4gY2FjaGVkIGZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwOTgKKyAgICAgICAgPHJkYXI6Ly83Mjg5
NDQ1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGVyZSdzIGEgc2NlbmFyaW8gd2hlbiB3ZSBnbyBiYWNrIHdoaWxlIHVzaW5nIHRoZSBiYWNrIGZv
cndhcmQgY2FjaGUsIGFuZAorICAgICAgICB3ZSByZS1hc3NvY2lhdGUgYSBjYWNoZWQgZnJhbWUg
d2l0aCBhIGRvY3VtZW50LCB0aGF0IHdlIHdlcmUgY3JlYXRpbmcgYW4KKyAgICAgICAgYWxyZWFk
eSBpbnZhbGlkYXRlZCAiZnJhbWUgY2xlYXJlZCIgd2F0Y2hwb2ludC4KKyAgICAgICAgVGhlcmUg
d2VyZSBhIGZldyB0aGluZ3Mgd2Ugd2VyZSBkb2luZyB3cm9uZzoKKyAgICAgICAgMS4gSW4gSlNE
T01XaW5kb3dCYXNlJ3MgY29uc3RydWN0b3IsIHdlIHRob3VnaHQgdGhhdCB3ZSBkaWRuJ3QgaGF2
ZSBhIGZyYW1lLAorICAgICAgICBldmVuIHRob3VnaCB3ZSBkaWQuIEl0IHdhcyBiZWNhdXNlIHdl
IGhhZGVuJ3QgZmluaXNoZWQgdGhlIGJvb2trZWVwaW5nIGluCisgICAgICAgIGBGcmFtZUxvYWRl
cjo6b3BlbihDYWNoZWRGcmFtZUJhc2UmIGNhY2hlZEZyYW1lKWAgdGhhdCBhc3NvY2lhdGVzIGEg
ZG9jdW1lbnQgd2l0aCBhCisgICAgICAgIGZyYW1lLiBBbmQgRE9NV2luZG93ICByZWxpZXMgb24g
aXRzIGRvY3VtZW50IHRvIGdldCBpdHMgZnJhbWUuIAorICAgICAgICAyLiBXaGVuIHRoZSB3YXRj
aHBvaW50IHdhcyBpbnZhbGlkYXRlZCwgd2Ugd2VyZSBzdGlsbCB0ZWxsaW5nIHRoZSBQcm9wZXJ0
eVNsb3QKKyAgICAgICAgYWJvdXQgaXQuIFRoaXMgd2FzIGJyZWFraW5nIEpTQydzIGludmFyaWFu
dCB0aGF0IHRoZXNlIGhhZCB0byBiZSB2YWxpZAorICAgICAgICB3YXRjaHBvaW50cy4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgcGF0Y2ggcmVzb2x2ZXM6CisgICAgICAgIDEuIFdlIG5vdyBsYXpp
bHkgY3JlYXRlIHRoZSB3YXRjaHBvaW50IHdoZW4gd2UgZmlyc3QgbmVlZCBpdC4gQnkgdGhhdCB0
aW1lLCB3ZQorICAgICAgICB3b3VsZCd2ZSBhbHJlYWR5IGJlZW4gYXNzb2NpYXRlZCB3aXRoIGEg
ZnJhbWUgaW4gdGhlIGFib3ZlIGV4YW1wbGUuCisgICAgICAgIDIuIFdlIGNoZWNrIGlmIHRoZSB3
YXRjaHBvaW50IGlzIHN0aWxsIHZhbGlkIGJlZm9yZSB0ZWxsaW5nIHRoZSBQcm9wZXJ0eVNsb3QK
KyAgICAgICAgYWJvdXQgaXQsIGluc3RlYWQgb2YgYWx3YXlzIGFzc3VtaW5nIGl0J3MgdmFsaWQu
CisgICAgICAgIAorICAgICAgICBJIHdhc24ndCBhYmxlIHRvIGdldCB0aGlzIHRlc3QgdG8gZmFp
bCBpbiBXS1RSL0RSVCwgYmVjYXVzZSBpdCBzZWVtcyB0byBiZQorICAgICAgICB3ZSdyZSBjcmFz
aGluZyB3aGVuIHJ1bm5pbmcgc29tZSBKUyBjb2RlIGZyb20gU2FmYXJpJ3MgaW5qZWN0ZWQgYnVu
ZGxlLiBJJ3ZlCisgICAgICAgIGFkZGVkIGEgbWFudWFsIHRlc3QgaW5zdGVhZC4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dCk6CisKIDIwMjEtMDEtMjcgIEFkYSBDaGFuICA8YWRhLmNoYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNlbmQgdGhlIGVuZCBYUlNlc3Npb25FdmVudCBhZnRlciB0aGUgcGxhdGZvcm0tc3BlY2lm
aWMgc3RlcHMgZm9yIHNlc3Npb24gc2h1dGRvd24gaGF2ZSBjb21wbGV0ZWQKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24g
MjcxOTg5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNiBAQCBjb25zdCBHbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSBKU0RPTVdpbmRvCiAKIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxET01XaW5kb3c+JiYgd2luZG93LCBK
U1dpbmRvd1Byb3h5KiBwcm94eSkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUsIHByb3h5LT53b3JsZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKLSAgICAsIG1f
d2luZG93Q2xvc2VXYXRjaHBvaW50cyhXYXRjaHBvaW50U2V0OjpjcmVhdGUoKHdpbmRvdyAmJiB3
aW5kb3ctPmZyYW1lKCkpID8gSXNXYXRjaGVkIDogSXNJbnZhbGlkYXRlZCkpCiAgICAgLCBtX3dy
YXBwZWQoV1RGTW92ZSh3aW5kb3cpKQogewogICAgIG1fcHJveHkuc2V0KHZtLCB0aGlzLCBwcm94
eSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAkocmV2aXNpb24gMjcxOTg5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgcHJvdGVjdGVkOgog
ICAgIEpTRE9NV2luZG93QmFzZShKU0M6OlZNJiwgSlNDOjpTdHJ1Y3R1cmUqLCBSZWZQdHI8RE9N
V2luZG93PiYmLCBKU1dpbmRvd1Byb3h5Kik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJiwgSlNXaW5kb3dQcm94eSopOwogCi0gICAgUmVmPEpTQzo6V2F0Y2hwb2ludFNldD4gbV93
aW5kb3dDbG9zZVdhdGNocG9pbnRzOworICAgIFJlZlB0cjxKU0M6OldhdGNocG9pbnRTZXQ+IG1f
d2luZG93Q2xvc2VXYXRjaHBvaW50czsKIAogcHJpdmF0ZToKICAgICB1c2luZyBSZXNwb25zZUNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IGNoYXIqLCBzaXplX3QpPjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDI3MTk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDkgKzI0MywxMyBAQCBib29sIEpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPCiAgICAgaWYgKCFCaW5kaW5nU2VjdXJp
dHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKSkKICAgICAgICAgcmV0dXJuIGpzRE9N
V2luZG93R2V0T3duUHJvcGVydHlTbG90UmVzdHJpY3RlZEFjY2VzczxET01XaW5kb3dUeXBlOjpM
b2NhbD4odGhpc09iamVjdCwgdGhpc09iamVjdC0+d3JhcHBlZCgpLCAqbGV4aWNhbEdsb2JhbE9i
amVjdCwgcHJvcGVydHlOYW1lLCBzbG90LCBlcnJvck1lc3NhZ2UpOwogCi0gICAgLy8gRklYTUU6
IHRoaXMgbmVlZHMgbW9yZSBleHBsYW5hdGlvbi4KLSAgICAvLyAoUGFydGljdWxhcmx5LCBpcyBp
dCBjb3JyZWN0IHRoYXQgdGhpcyBleGlzdHMgaGVyZSBidXQgbm90IGluIGdldE93blByb3BlcnR5
U2xvdEJ5SW5kZXg/KQotICAgIHNsb3Quc2V0V2F0Y2hwb2ludFNldCh0aGlzT2JqZWN0LT5tX3dp
bmRvd0Nsb3NlV2F0Y2hwb2ludHMuZ2V0KCkpOworICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVj
dC0+bV93aW5kb3dDbG9zZVdhdGNocG9pbnRzKSkKKyAgICAgICAgdGhpc09iamVjdC0+bV93aW5k
b3dDbG9zZVdhdGNocG9pbnRzID0gV2F0Y2hwb2ludFNldDo6Y3JlYXRlKHRoaXNPYmplY3QtPndy
YXBwZWQoKS5mcmFtZSgpID8gSXNXYXRjaGVkIDogSXNJbnZhbGlkYXRlZCk7CisgICAgLy8gV2Ug
dXNlIG1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyB0byBjbGVhciBhbnkgaW5saW5lIGNhY2hlcyBv
bmNlIHRoZSBmcmFtZSBpcyBjbGVhcmVkLgorICAgIC8vIEJlY2F1c2UgdGhpcyBjYW4gb25seSBo
YXBwZW4gb25jZSwgd2UgZG9uJ3QgbmVlZCB0byBjb25zaWRlciBhIHBvdGVudGlhbCBwaW5nLXBv
bmdpbmcKKyAgICAvLyBiZXR3ZWVuIHN0YXRlcyBvZiBoYXZpbmcgYSBmcmFtZSBvciBub3QgaGF2
aW5nIGEgZnJhbWUuCisgICAgaWYgKHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50
cy0+aXNTdGlsbFZhbGlkT25KU1RocmVhZCgpKQorICAgICAgICBzbG90LnNldFdhdGNocG9pbnRT
ZXQoKnRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyk7CiAKICAgICAvLyAoMikg
UmVndWxhciBvd24gcHJvcGVydGllcy4KICAgICBQcm9wZXJ0eVNsb3Qgc2xvdENvcHkgPSBzbG90
Owo=
</data>
<flag name="review"
          id="436854"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418911</attachid>
            <date>2021-02-01 12:16:38 -0800</date>
            <delta_ts>2021-02-01 13:41:02 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>108045</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTk4
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAx
LTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIExhemlseSBj
cmVhdGUgbV93aW5kb3dDbG9zZVdhdGNocG9pbnRzIHNvIHdlIGRvbid0IG1pc3Rha2VubHkgdGhp
bmsgd2UgaGF2ZSBhIGZyYW1lIHdoZW4gcmUtYXNzb2NpYXRpbmcgYSBkb2N1bWVudCB0byBhIGdp
dmVuIGNhY2hlZCBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjIxMDk4CisgICAgICAgIDxyZGFyOi8vNzI4OTQ0NTQ+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhIGFuZCBNYXJrIExhbS4KKworICAgICAgICAqIE1hbnVhbFRl
c3RzL2RvbnQtY3JlYXRlLWludmFsaWQtd2F0Y2hwb2ludC13aGVuLWdvaW5nLWJhY2suaHRtbDog
QWRkZWQuCisgICAgICAgICogTWFudWFsVGVzdHMvcmVzb3VyY2VzL2VtcHR5LXRleHQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBNYW51YWxUZXN0cy9yZXNvdXJjZXMvZnVsbF9yZXN1bHRzLmpzb246
IEFkZGVkLgorICAgICAgICAqIE1hbnVhbFRlc3RzL3Jlc291cmNlcy90ZXN0LXJlc3VsdHMtcGFn
ZS5odG1sOiBBZGRlZC4KKwogMjAyMS0wMS0yNyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFu
Z2Vsb3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBTZXQgcnVieS1pbmRlbnQtbGV2ZWwgdG8gNApJ
bmRleDogTWFudWFsVGVzdHMvZG9udC1jcmVhdGUtaW52YWxpZC13YXRjaHBvaW50LXdoZW4tZ29p
bmctYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIE1hbnVhbFRlc3RzL2RvbnQtY3JlYXRlLWludmFs
aWQtd2F0Y2hwb2ludC13aGVuLWdvaW5nLWJhY2suaHRtbAkobm9uZXhpc3RlbnQpCisrKyBNYW51
YWxUZXN0cy9kb250LWNyZWF0ZS1pbnZhbGlkLXdhdGNocG9pbnQtd2hlbi1nb2luZy1iYWNrLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKworPGJvZHk+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHJ1bigpIHsKKyAgICBwb3B1cFdp
bmRvdyA9IHdpbmRvdy5vcGVuKCJyZXNvdXJjZXMvdGVzdC1yZXN1bHRzLXBhZ2UuaHRtbCIpOwor
ICAgIGNvbnNvbGUubG9nKCJjcmVhdGVkIHBvcHVwIHdpbmRvdyIpOworICAgIHBvcHVwV2luZG93
Lm9ubG9hZCA9ICgpID0+IHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAg
ICBsZXQgYSA9IHBvcHVwV2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImFbaHJlZj0n
ZmFzdC9tdWx0aWNvbC9jcmFzaC13aGVuLXNwYW5uZXItY2FuZGlkYXRlLWlzLW91dC1vZi1mbG93
LWNyYXNoLWxvZy50eHQnXSIpWzBdOworICAgICAgICAgICAgY29uc29sZS5sb2cocG9wdXBXaW5k
b3cubG9jYXRpb24uaHJlZik7CisgICAgICAgICAgICBhLmhyZWYgPSAiZW1wdHktdGV4dC50eHQi
OworICAgICAgICAgICAgbGV0IHByaW9ySGlzdG9yeUxlbmd0aCA9IHBvcHVwV2luZG93Lmhpc3Rv
cnkubGVuZ3RoOworICAgICAgICAgICAgYS5jbGljaygpOworICAgICAgICAgICAgY29uc29sZS5s
b2coImNhbGxlZCBjbGljaygpIik7CisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja05hdmlnYXRl
ZCgpIHsKKyAgICAgICAgICAgICAgICBpZiAocG9wdXBXaW5kb3cuaGlzdG9yeS5sZW5ndGggIT09
IChwcmlvckhpc3RvcnlMZW5ndGggKyAxKSkgeworICAgICAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGNoZWNrTmF2aWdhdGVkLCAxMDApOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHBvcHVwV2luZG93LmxvY2F0aW9uLmhyZWYp
OworICAgICAgICAgICAgICAgICAgICBwb3B1cFdpbmRvdy5oaXN0b3J5LmJhY2soKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc29sZS5sb2coInNldHRpbmcgdGltZXIgdG8gbm90aWZ5RG9uZSIp
OworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zb2xlLmxvZyhwb3B1cFdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJjYWxsaW5nIG5vdGlmeWRvbmUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSwgMjUwMCk7CisgICAgICAgICAgICAgICAgfSwgMjUwMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrTmF2aWdhdGVkLCAxMDAp
OworICAgICAgICB9LCAyMDAwKTsKKyAgICB9OworfQorCis8L3NjcmlwdD4KKworPGEgb25jbGlj
az0icnVuKCkiPiBjbGljayBtZSA8L2E+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IE1hbnVh
bFRlc3RzL3Jlc291cmNlcy9lbXB0eS10ZXh0LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBNYW51YWxU
ZXN0cy9yZXNvdXJjZXMvZnVsbF9yZXN1bHRzLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTWFudWFsVGVz
dHMvcmVzb3VyY2VzL2Z1bGxfcmVzdWx0cy5qc29uCShub25leGlzdGVudCkKKysrIE1hbnVhbFRl
c3RzL3Jlc291cmNlcy9mdWxsX3Jlc3VsdHMuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
IEBACitBRERfUkVTVUxUUyh7InRlc3RzIjp7InBsYXRmb3JtIjp7Im1hYyI6eyJmYXN0Ijp7InRl
eHQiOnsiY29tYmluaW5nLWNoYXJhY3Rlci1zZXF1ZW5jZS1mYWxsYmFjay5odG1sIjp7ImV4cGVj
dGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJsaWdh
dHVyZS1zdWJkaXZpc2lvbi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJ2ZXJ0aWNhbC1uby1zaWRld2F5cy5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJz
eXN0ZW1Gb250Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwi
aGFzX3N0ZGVyciI6dHJ1ZX19LCJvdmVyZmxvdyI6eyJvdmVyZmxvdy1zY3JvbGxiYXItaGl0LXRl
c3QuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6
dHJ1ZX19LCJvYmpjIjp7Imxvbmdsb25nVGVzdC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04i
LCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIndl
YlNjcmlwdE9iamVjdC1oYXNXZWJTY3JpcHRLZXkuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9O
IiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fSwi
bG9hZGVyIjp7ImZpbGUtdXJsLW1pbWV0eXBlcy0yLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwi
YWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fX19fSwid2ViZ2wiOnsiMi4wLjAiOnsi
Y29uZm9ybWFuY2UiOnsidGV4dHVyZXMiOnsibWlzYyI6eyJ0ZXh0dXJlLWNvcHlpbmctZmVlZGJh
Y2stbG9vcHMuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwi
YWN0dWFsIjoiQ1JBU0giLCJoYXNfc3RkZXJyIjp0cnVlfX19fX0sIjEuMC4zIjp7ImNvbmZvcm1h
bmNlIjp7InRleHR1cmVzIjp7InRleHR1cmUtY29weWluZy1mZWVkYmFjay1sb29wcy5odG1sIjp7
InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJDUkFTSCIs
Imhhc19zdGRlcnIiOnRydWV9fX19fSwiZmFzdCI6eyJjc3MtZ2VuZXJhdGVkLWNvbnRlbnQiOnsi
aW5pdGlhbC1sZXR0ZXItZmlyc3QtbGluZS13cmFwcGluZy5odG1sIjp7ImV4cGVjdGVkIjoiSU1B
R0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9
PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuOTN9fSwidGV4dCI6eyJhcmFiaWMtendqLWFuZC16
d25qLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19z
dGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwiZm9udC12YXJpYXRpb25zLWZlYXR1
cmUtZGV0ZWN0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwi
aGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2Vu
dCI6MTIuMTZ9LCJlbXBoYXNpcy12ZXJ0aWNhbC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFj
dHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiZW1vamktZ2VuZGVyLTYuaHRtbCI6eyJl
eHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0
ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50Ijo4LjUyfSwibXVsdGlnbHlwaC1j
aGFyYWN0ZXJzLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19z
dGRlcnIiOnRydWV9LCJlbW9qaS1nZW5kZXItOS5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJh
Y3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJp
bWFnZV9kaWZmX3BlcmNlbnQiOjAuMzd9LCJlbW9qaS1nZW5kZXItMy5odG1sIjp7ImV4cGVjdGVk
IjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlw
ZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjQuMTd9LCJ0ZXh0LXNlY3VyaXR5LWRpc2Mt
YnVsbGV0LXB1YS5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhh
c19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQi
OjAuMzd9LCJsZXR0ZXItc3BhY2luZy1zaGFwaW5nLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElN
QUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9
PSJdfSwiYXJhYmljLWJsb2NrZWQtZm9udHMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0Ui
LCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19
LCJzeXN0ZW0tZm9udC1qYXBhbmVzZS1zeW50aGV0aWMtaXRhbGljLmh0bWwiOnsiZXhwZWN0ZWQi
OiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3Rf
dHlwZSI6WyIhPSJdfSwidXNlci1pbnN0YWxsZWQtZm9udHMiOnsiZXh0ZW5kZWQtY2hhcmFjdGVy
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRl
cnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwic2hhZG93LWZhbWlseS5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwi
cmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC42OX0sInNoYWRvdy1w
b3N0c2NyaXB0LWZhbWlseS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6
IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2Rp
ZmZfcGVyY2VudCI6MC42OX0sInNoYWRvdy1kaXNhYmxlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNT
IElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6
WyIhPSJdfSwic2hhZG93LWZhbWlseS1kaXNhYmxlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElN
QUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIh
PSJdfSwibG9jYWwuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNT
IiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJzaGFkb3ctcG9zdHNj
cmlwdC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFz
X3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6
MC42OX0sImV4dGVuZGVkLWNoYXJhY3Rlci13aXRoLXVzZXItZm9udC5odG1sIjp7ImV4cGVjdGVk
IjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVz
dF90eXBlIjpbIiE9Il19LCJzaGFkb3ctcG9zdHNjcmlwdC1kaXNhYmxlLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRl
c3RfdHlwZSI6WyIhPSJdfSwiZGlzYWJsZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0s
InNoYWRvdy1wb3N0c2NyaXB0LWZhbWlseS1kaXNhYmxlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNT
IElNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6
WyIhPSJdfSwic3lzdGVtLXVpLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFs
IjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sInNoYWRv
dy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0
ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC42
OX19LCJsb2NhbGUtc2hhcGluZy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVh
bCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sIndvZmYy
LXRvdGFsc2ZudHNpemUuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQ
QVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJjYW52YXMtY29s
b3ItZm9udHMiOnsic3Ryb2tlLWNvbG9yLXNoYWRvdy1DT0xSLmh0bWwiOnsiZXhwZWN0ZWQiOiJQ
QVNTIiwiYWN0dWFsIjoiSU1BR0UiLCJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiaGFzX3N0ZGVyciI6
dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4zMX0sInN0
cm9rZS1jb2xvci1DT0xSLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiSU1BR0Ui
LCJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpb
Ij09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4zMX19LCJoeXBoZW4tbWluLXByZWZlcnJlZC13
aWR0aC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRl
cnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDF9
LCJlbW9qaS1nZW5kZXItNC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFH
RSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3Bl
cmNlbnQiOjMuNn0sIm1hYyI6eyJzZWxlY3QtY2hhcmFjdGVyLWJlZm9yZS16ZXJvLXdpZHRoLWpv
aW5lci5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX19LCJpbnRlcm5hdGlvbmFsIjp7ImJp
ZGktQU4tYWZ0ZXItZW1wdHktcnVuLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1
YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImJpZGktQ1MtYWZ0ZXItQU4uaHRtbCI6eyJl
eHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwi
c3lzdGVtLWxhbmd1YWdlIjp7ImNvbXBvc2l0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInN5c3RlbS1mb250
LXB1bmN0dWF0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwi
OiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFnZSI6eyJuYXZpZ2F0
b3ItbGFuZ3VhZ2UtZnItQ0EuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFj
dHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLWVzLU1Y
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFz
X3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS16aC1IYW50LUhLLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1
ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS1oaS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElN
QUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3Vh
Z2UtZnIuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRFWFQi
LCJoYXNfc3RkZXJyIjp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLXpoLVRXLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1
ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS16aC1IYW5zLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1s
YW5ndWFnZS1lcy1FUy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFs
IjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtemgtSEsuaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3Rk
ZXJyIjp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLXB0LVBULmh0bWwiOnsiZXhwZWN0ZWQiOiJQ
QVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmln
YXRvci1sYW5ndWFnZS16aC1IYW50Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0Ui
LCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS1l
bi1HQi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiVEVYVCIs
Imhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtamEuaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwi
bmF2aWdhdG9yLWxhbmd1YWdlLWVuLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0Ui
LCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFnZS1l
bi1VUy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElNQUdFIiwiYWN0dWFsIjoiVEVYVCIs
Imhhc19zdGRlcnIiOnRydWV9LCJuYXZpZ2F0b3ItbGFuZ3VhZ2UtcnUuaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwi
bmF2aWdhdG9yLWxhbmd1YWdlLXB0LUJSLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1B
R0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm5hdmlnYXRvci1sYW5ndWFn
ZS1lcy00MTkuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFjdHVhbCI6IlRF
WFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibmF2aWdhdG9yLWxhbmd1YWdlLWVzLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1
ZX19LCJkZWNsYXJhdGl2ZS1sYW5ndWFnZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIElN
QUdFIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJhcmFiaWMtZ2x5cGgtY2Fj
aGUtZmlsbC1jb21iaW5lLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1
YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19LCJoYW4t
cXVvdGVzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwgSU1BR0UiLCJhY3R1YWwiOiJJTUFH
RSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfSwiaGluZGktc3lzdGVt
LWZvbnQtcHVuY3R1YXRpb24uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBJTUFHRSIsImFj
dHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX19LCJ0
aGFpLWxpbmUtYnJlYWtzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJU
RVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJlbW9qaS1nZW5kZXItNS5odG1sIjp7ImV4cGVjdGVk
IjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlw
ZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjUuMH0sImxldHRlcnByZXNzLWRpZmZlcmVu
dC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIi
OnRydWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfSwiY3Jhc2gtY29tcGxleC10ZXh0LXN1cnJvZ2F0
ZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRl
cnIiOnRydWV9LCJlbW9qaS1nZW5kZXItOC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1
YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFn
ZV9kaWZmX3BlcmNlbnQiOjIuNzF9LCJjaGluZXNlLWZvbnQtbmFtZS1hbGlhc2VzLTIuaHRtbCI6
eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJy
ZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjoxLjg2fSwid29mZjIuaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6
dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJjb250cm9sLWNoYXJhY3RlcnMiOnsidmlzaWJs
ZS1jb250cm9sLWNoYXJhY3RlcnMtMy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwi
OiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfSwidmlzaWJs
ZS1jb250cm9sLWNoYXJhY3RlcnMtMy54aHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFs
IjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sInZpc2li
bGUtY29udHJvbC1jaGFyYWN0ZXJzLTIueGh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVh
bCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19LCJ2aXNp
YmxlLWNvbnRyb2wtY2hhcmFjdGVycy0yLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVh
bCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19LCJ2aXNp
YmxlLWNvbnRyb2wtY2hhcmFjdGVycy0xLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVh
bCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIiE9Il19fX0sInBh
cnNlciI6eyJ4bWwtZXJyb3ItYWRvcHRlZC54bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIFRJTUVPVVQi
LCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImFkb3B0aW9uLWFnZW5jeS11bmxv
YWQtaWZyYW1lLTQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6IlBB
U1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImR5bmFtaWMiOnsidGV4dC1jb21iaW5lLmh0bWwiOnsi
ZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fSwibG9h
ZGVyIjp7ImphdmFzY3JpcHQtdXJsLWluLWVtYmVkLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInJlZGlyZWN0LXRvLWludmFs
aWQtdXJsLXVzaW5nLW1ldGEtcmVmcmVzaC1kaXNhbGxvd2VkLWFzeW5jLWRlbGVnYXRlcy5odG1s
Ijp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRy
dWV9LCJkb2N1bWVudC13aXRoLWZyYWdtZW50LXVybC00Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNT
IFRJTUVPVVQiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInJlZGlyZWN0LXRv
LWludmFsaWQtdXJsLXVzaW5nLW1ldGEtcmVmcmVzaC1jYWxscy1wb2xpY3ktZGVsZWdhdGUuaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0
cnVlfSwiZG9jdW1lbnQtd2l0aC1mcmFnbWVudC11cmwtMy5odG1sIjp7ImV4cGVjdGVkIjoiUEFT
UyBUSU1FT1VUIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fSwiZnJhbWVzIjp7
InNhbmRib3hlZC1pZnJhbWUtcGx1Z2lucy5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJl
eHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImNyYXNo
LWR1cmluZy1pZnJhbWUtbG9hZC1zdG9wLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIFRJTUVPVVQi
LCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImZsYXR0ZW5pbmciOnsiZnJhbWVz
ZXQtZmxhdHRlbmluZy1zdWJmcmFtZXNldHMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIs
ImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiZnJhbWVzZXQtZmxhdHRlbmluZy1n
cmlkLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0
ZGVyciI6dHJ1ZX0sImlmcmFtZS1mbGF0dGVuaW5nLWZpeGVkLWhlaWdodC5odG1sIjp7ImV4cGVj
dGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJpZnJh
bWUtZmxhdHRlbmluZy1vdXQtb2Ytdmlldy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwi
YWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJpZnJhbWUtZmxhdHRlbmluZy1vZmZz
Y3JlZW4uaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNf
c3RkZXJyIjp0cnVlfSwiZnJhbWVzZXQtZmxhdHRlbmluZy1hZHZhbmNlZC5odG1sIjp7ImV4cGVj
dGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9fSwic2Fu
ZGJveGVkLWlmcmFtZS1hYm91dC1ibGFuay5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJl
eHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInNhbmRi
b3hlZC1pZnJhbWUtbmF2aWdhdGlvbi1hbGxvd2VkLmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lP
TiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0s
Imhhcm5lc3MiOnsic2FtcGxlLWZhaWwtbWlzbWF0Y2gtcmVmdGVzdC5odG1sIjp7ImV4cGVjdGVk
IjoiSU1BR0UiLCJ3b250Zml4Ijp0cnVlLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRy
dWUsInJlZnRlc3RfdHlwZSI6WyIhPSJdfX0sImNzcy1pbnRyaW5zaWMtZGltZW5zaW9ucyI6eyJo
ZWlnaHQtdGFibGVzLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwi
aGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2Vu
dCI6MC4wMn0sImhlaWdodC1jc3MtdGFibGVzLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFj
dHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImlt
YWdlX2RpZmZfcGVyY2VudCI6MC4wNH19LCJpbWFnZXMiOnsiYXN5bmMtaW1hZ2UtYm9keS1iYWNr
Z3JvdW5kLWltYWdlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIFRJTUVPVVQiLCJhY3R1YWwiOiJU
SU1FT1VUIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJhbmltYXRl
ZC1wbmctbG9vcC1jb3VudC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6
IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sImFuaW1hdGVk
LWdpZi1sb29wLWNvdW50Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwid2VicC1hcy1p
bWFnZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFz
X3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6
MjQuOTl9LCJnaWYtbG9vcC1jb3VudC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwi
OiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJpbWFnZS1j
b3B5LW1lbW9yeS11c2FnZS5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlBBU1Mi
LCJoYXNfc3RkZXJyIjp0cnVlfSwiYW5pbWF0ZWQtZ2lmLW5vLWxheW91dC5odG1sIjp7ImV4cGVj
dGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3Rf
dHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjEuMTR9LCJzbG93ZXItYW5pbWF0aW9u
LXRoYW4tZGVjb2RpbmctaW1hZ2UuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVh
bCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiYW5pbWF0ZWQtaW1hZ2UtZGlmZmVyZW50LWRl
c3Qtc2l6ZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJo
YXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sImltYWdlLWNvbnRyb2xzLWJh
c2ljLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIi
OnRydWV9LCJhbmltYXRlZC1naWYtc2Nyb2xsaW5nLWNyYXNoLmh0bWwiOnsiZXhwZWN0ZWQiOiJQ
QVNTIFRJTUVPVVQiLCJhY3R1YWwiOiJUSU1FT1VUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInJlc2V0
LWltYWdlLWFuaW1hdGlvbi5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWV9fSwidGFibGUiOnsiaGl0dGVzdC10YWJsZWNlbGwtcmln
aHQtZWRnZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhh
c19zdGRlcnIiOnRydWV9LCJib3JkZXItY29sbGFwc2luZyI6eyJjb2xsYXBzZWQtYm9yZGVycy1h
ZGpvaW5pbmctc2VjdGlvbnMuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1B
R0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9w
ZXJjZW50IjowLjA3fX0sImhpdHRlc3QtdGFibGVjZWxsLXdpdGgtYm9yZGVycy1yaWdodC1lZGdl
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX19LCJsYXllcnMiOnsibm8tY2xpcHBpbmctb3ZlcmZsb3ctaGlkZGVuLWFkZGVkLWFm
dGVyLXRyYW5zZm9ybS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBB
U1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX19LCJjYW52YXMiOnsi
Y2FudmFzLWVsbGlwc2UtemVyby1saW5ldG8uaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1
YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImNhbnZhcy1maWxsUmVjdC1ncmFkaWVudC1z
aGFkb3cuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlfSwiY2FudmFzLWNvbXBvc2l0ZS1hbHBoYS5odG1sIjp7ImV4cGVjdGVkIjoi
UEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJjYW52YXMtc2Nh
bGUtc3Ryb2tlUGF0aC1zaGFkb3cuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVh
bCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgu
Z3JhZGllbnQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJo
YXNfc3RkZXJyIjp0cnVlfSwiY2FudmFzLXF1YWRyYXRpYy1zYW1lLWVuZHBvaW50Lmh0bWwiOnsi
ZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJjYW52
YXMtZHJhdy1jYW52YXMtb24tY2FudmFzLXNoYWRvdy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBG
QUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJzZXQtY29sb3JzLmh0bWwi
OnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJj
YW52YXMtY3VycmVudENvbG9yLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVY
VCIsImhhc19zdGRlcnIiOnRydWV9LCJjYW52YXMtaW1hZ2VTbW9vdGhpbmdFbmFibGVkLXJlcGFp
bnQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3Rk
ZXJyIjp0cnVlfSwid2ViZ2wiOnsid2ViZ2wtY29tcHJlc3NlZC10ZXh0dXJlLXNpemUtbGltaXQu
aHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCBUSU1FT1VUIiwiYWN0dWFsIjoiVEVYVCIsImhh
c19zdGRlcnIiOnRydWV9LCJidWZmZXJEYXRhLW9mZnNldC1sZW5ndGguaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiY29udGV4
dC1jcmVhdGlvbi1hdHRyaWJ1dGVzLmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVj
dGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwidGV4LWltYWdl
LWFuZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZS1kYXRhLXJnYjU2NS5odG1sIjp7ImV4cGVjdGVk
IjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJ0ZXgtaW1h
Z2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLWFycmF5LWJ1ZmZlci12aWV3Lmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInRleC1p
bWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS1yZ2JhNDQ0NC5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJ3
ZWJnbC1kcmF3LWJ1ZmZlcnMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6
IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwicmVhZC1waXhlbHMtdGVzdC5odG1sIjp7ImV4cGVj
dGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJ0ZXgt
aW1hZ2UtYW5kLXN1Yi1pbWFnZS0yZC13aXRoLXBvdGVudGlhbGx5LXN1YnNhbXBsZWQtaW1hZ2Uu
aHRtbCI6eyJleHBlY3RlZCI6IkNSQVNIIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRy
dWV9LCJwcm9ncmFtLXRlc3QuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJQQVNT
IiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInRleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1h
Z2UtZGF0YS1yZ2JhNTU1MS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJvZXMtZWxlbWVudC1pbmRleC11aW50Lmh0bWwiOnsi
ZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
InRleC1pbWFnZS1hbmQtc3ViLWltYWdlLTJkLXdpdGgtaW1hZ2UtZGF0YS5odG1sIjp7ImV4cGVj
dGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJ0ZXhJ
bWFnZTJELW1zZS1mbGlwWS1mYWxzZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwi
YWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJvZXMtdGV4dHVyZS1mbG9hdC1saW5l
YXIuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3Rk
ZXJyIjp0cnVlfX19LCJtdWx0aWNvbCI6eyJwYWdpbmF0aW9uIjp7IlJpZ2h0VG9MZWZ0LXRiLmh0
bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9
LCJSaWdodFRvTGVmdC1ybC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlBBU1Mi
LCJoYXNfc3RkZXJyIjp0cnVlfX0sIm11bHRpY29sLXdpdGgtY2hpbGQtcmVuZGVyTGF5ZXItZm9y
LWlucHV0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0
ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4w
MX0sImNyYXNoLXdoZW4tc3Bhbm5lci1jYW5kaWRhdGUtaXMtb3V0LW9mLWZsb3cuaHRtbCI6eyJy
ZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiQ1JBU0giLCJo
YXNfc3RkZXJyIjp0cnVlfSwiZml4ZWQtc3RhY2suaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwi
YWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwi
aW1hZ2VfZGlmZl9wZXJjZW50IjowLjAxfSwibWl4ZWQtb3BhY2l0eS1maXhlZC10ZXN0Lmh0bWwi
OnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwi
cmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6OC41NH19LCJ4bWxodHRw
cmVxdWVzdCI6eyJ4bWxodHRwcmVxdWVzdC1yZWN1cnNpdmUtc3luYy1ldmVudC5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fSwi
dGV4dC1hdXRvc2l6aW5nIjp7ImlvcyI6eyJ0ZXh0LWF1dG9zaXppbmctYWZ0ZXItYmFjay5odG1s
Ijp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIi
OnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfX19LCJydWJ5Ijp7ImJhc2Utc2hvcnRlci10aGFu
LXRleHQuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX19LCJ3b3JrZXJzIjp7Indvcmtlci10ZXJtaW5hdGUuaHRtbCI6eyJleHBlY3RlZCI6
IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sInByZWxv
YWRlciI6eyJpbWFnZS1zcmNzZXQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVh
bCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImZvcm1zIjp7InNlYXJjaGZpZWxkLWhlaWdo
dHMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3Rk
ZXJyIjp0cnVlfSwidGV4dGFyZWEiOnsidGV4dGFyZWEtc3RhdGUtcmVzdG9yZS5odG1sIjp7ImV4
cGVjdGVkIjoiUEFTUyBGQUlMIFRJTUVPVVQiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6
dHJ1ZX19LCJzZWFyY2gtZXZlbnQtZGVsYXkuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiaW5wdXQtc2V0LWNvbXBvc2l0aW9u
LXNjcm9sbC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhh
c19zdGRlcnIiOnRydWV9LCJmb2N1cy1zZWxlY3Rpb24tdGV4dGFyZWEuaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwic3RhdGUt
cmVzdG9yZS10by1ub24tZWRpdGVkLWNvbnRyb2xzLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZB
SUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImxpc3Rib3gtc2Nyb2xsYmFy
LWhpdC10ZXN0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19z
dGRlcnIiOnRydWV9fSwibGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQiOnsicnVuLWV4cGFuc2lvbi1l
eHRlbmRzLWxpbmUtY29udGVudC13aWR0aC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1
YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFn
ZV9kaWZmX3BlcmNlbnQiOjAuNDR9LCJxdWlyay1tYXJnaW4tbm90LWNvbGxhcHNlLXdoZW4tZmxv
YXRpbmcuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3Rk
ZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjI3
fSwiaW5saW4tYm94LWNvbnRlbnQtZml0cy1idXQtdGhlLWJveC1kb2VzLW5vdC5odG1sIjp7ImV4
cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRl
c3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuNjJ9LCJici1hbmQtd2JyLXNp
bXBsZS5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRl
cnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMzR9
LCJpbnRydXNpdmUtZmxvYXRzLXRha2VzLWVudGlyZS1ob3Jpem9udGFsLXNwYWNlLmh0bWwiOnsi
ZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVm
dGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC43Mn0sImhvcml6b250YWwt
c2l6aW5nLXdpdGgtdHJhaWxpbmctbGV0dGVyLXNwYWNpbmcuaHRtbCI6eyJleHBlY3RlZCI6IklN
QUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsi
PT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjkzfSwid2JyLXNpbXBsZS5odG1sIjp7ImV4cGVj
dGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3Rf
dHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDJ9fSwicGVyZm9ybWFuY2UiOnsi
cGVyZm9ybWFuY2Utbm93LXRpbWVzdGFtcHMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImJvcmRlcnMiOnsiYm9yZGVyLXBh
aW50aW5nLWRvdHRlZC5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNl
bnQiOjEuMDh9LCJib3JkZXItcGFpbnRpbmctZGFzaGVkLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFH
RSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09
Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC43MX0sImJvcmRlci1wYWludGluZy1kb3VibGUuaHRt
bCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVl
LCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjQ3fSwiYm9yZGVy
LWZpdC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19z
dGRlcnIiOnRydWV9LCJib3JkZXItZml0LTIuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfX0sInN1Yi1waXhlbCI6eyJibG9jay13
aXRoLW1hcmdpbi1vdmVyZmxvdy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJ
TUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZm
X3BlcmNlbnQiOjAuMX0sImNsaWVudC13aWR0aC1oZWlnaHQtc25hcHBpbmcuaHRtbCI6eyJleHBl
Y3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImZpbGUtdXBs
b2FkLWNvbnRyb2wtYXQtZnJhY3Rpb25hbC1vZmZzZXQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdF
IiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0i
XSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAyfSwiaW5wdXQtY2FyZXQtb24tc3VicGl4ZWwtYm91
bmQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJy
Ijp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAxfX0s
ImV2ZW50cyI6eyJzY3JvbGwtZGl2LXdpdGgtcHJldmVudC1kZWZhdWx0LWluLXN1YmZyYW1lLmh0
bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9
LCJjb250ZXh0LW5vZHJhZy5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQi
LCJoYXNfc3RkZXJyIjp0cnVlfSwiYXR0ZW1wdC1zY3JvbGwtd2l0aC1uby1zY3JvbGxiYXJzLmh0
bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9
LCJ0YWJpbmRleC1mb2N1cy1ibHVyLWFsbC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VU
IiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJtb3VzZS1jdXJzb3ItY2hhbmdl
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRy
dWV9LCJtb3VzZW91dC1vbi13aW5kb3cuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwi
OiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImNvbnN0cnVjdG9ycyI6eyJjbG9zZS1ldmVudC1j
b25zdHJ1Y3Rvci5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sIm92ZXJmbG93LWV2ZW50LWNvbnN0
cnVjdG9yLmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFj
dHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImJlZm9yZS11bmxvYWQtYWRvcHQtc3Vi
ZnJhbWUtdG8tb3V0c2lkZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwiYWN0dWFs
IjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJvdmVyZmxvdy1zY3JvbGwtZmFrZS1tb3VzZS1t
b3ZlLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0
ZGVyciI6dHJ1ZX19LCJjc3MiOnsicGFyc2luZy1jc3MtYWxsb3dlZC1zdHJpbmctY2hhcmFjdGVy
cy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRl
cnIiOnRydWV9LCJvYmplY3QtZml0Ijp7Im9iamVjdC1maXQtY2FudmFzLmh0bWwiOnsiZXhwZWN0
ZWQiOiJQQVNTIElNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0
ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjA0fX0sInZlcnRpY2FsLWFs
aWduLWJhc2VsaW5lLXJvd3NwYW4tMDEwLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVh
bCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdl
X2RpZmZfcGVyY2VudCI6MC40OH0sInN0aWNreSI6eyJpbmxpbmUtc3RpY2t5LWFic3Bvcy1jaGls
ZC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3Rk
ZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sImlubGluZS1zdGlja3kuaHRtbCI6eyJl
eHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwi
cmVmdGVzdF90eXBlIjpbIj09Il19LCJzdGlja3ktdG9wLXpvb21lZC5odG1sIjp7ImV4cGVjdGVk
IjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlw
ZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjEzLjU2fSwic3RpY2t5LWJvdGgtc2lkZXMu
aHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVy
ciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19fSwicmVhZC1vbmx5LXJlYWQtd3JpdGUtaW5w
dXQtYmFzaWNzLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFz
X3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6
MC4zNX0sInJlc2l6ZS1jb3JuZXItdHJhY2tpbmcuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJ
TCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiaW5wdXQtc2VhcmNoLXBhZGRp
bmcuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6
dHJ1ZX0sInBzZXVkby12aXNpdGVkLWJhY2tncm91bmQtY29sb3Itb24taW5wdXQuaHRtbCI6eyJl
eHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0
ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjM2fSwiY291bnRlcnMiOnsi
ZWxlbWVudC1yZW1vdmFsLWNyYXNoLnhodG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0
dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fX0sImhpZHBpIjp7ImZpbHRlcnMtYW5kLWlt
YWdlLWJ1ZmZlci1yZXNvbHV0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0
dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfX0sImNz
cy1ncmlkLWxheW91dCI6eyJncmlkLXNob3J0aGFuZHMtc3R5bGUtZm9ybWF0Lmh0bWwiOnsiZXhw
ZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJwb3NpdGlv
bmVkLWdyaWQtY29udGFpbmVyLXBlcmNlbnRhZ2UtdHJhY2tzLmh0bWwiOnsiZXhwZWN0ZWQiOiJG
QUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJncmlkLWFsaWduLWJhc2Vs
aW5lLXZlcnRpY2FsLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhh
c19zdGRlcnIiOnRydWV9fSwibWVkaWFjYXB0dXJlZnJvbWVsZW1lbnQiOnsiQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtLTJkLWV2ZW50cy5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIiwi
YWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fSwib3ZlcmZsb3ciOnsic2Nyb2xsYmFy
LWNsaWNrLXJldGFpbnMtZm9jdXMuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJU
RVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImhvcml6b250YWwtc2Nyb2xsLWFmdGVyLWJhY2suaHRt
bCI6eyJleHBlY3RlZCI6IlBBU1MgVElNRU9VVCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJy
Ijp0cnVlfX0sInNjcm9sbGluZyI6eyJydGwtc2Nyb2xsYmFycy1zaW1wbGUuaHRtbCI6eyJleHBl
Y3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0
X3R5cGUiOlsiIT0iXX0sInJ0bC1zY3JvbGxiYXJzLXBvc2l0aW9uaW5nLmh0bWwiOnsiZXhwZWN0
ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90
eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4yOH0sInJ0bC1zY3JvbGxiYXJzLWFu
aW1hdGlvbi1wcm9wZXJ0eS5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQi
LCJoYXNfc3RkZXJyIjp0cnVlfSwicnRsLXNjcm9sbGJhcnMtaWZyYW1lLW9mZnNldC5odG1sIjp7
ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJl
ZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMTh9LCJydGwtc2Nyb2xs
YmFycy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRl
cnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuNzh9
LCJydGwtc2Nyb2xsYmFycy10ZXh0LXNlbGVjdGlvbi5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0Ui
LCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJd
LCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDF9LCJzY3JvbGxhYmxlLWFyZWEtZnJhbWUtemVyby1z
aXplLWFuZC1ib3JkZXIuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBB
U1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwicnRsLXNjcm9sbGJhcnMtcG9zaXRpb24tYWJzb2x1dGUu
aHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0
cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAxfSwicnRs
LXNjcm9sbGJhcnMtZWxlbWVudEZyb21Qb2ludC1zdGF0aWMuaHRtbCI6eyJleHBlY3RlZCI6IkZB
SUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sInJ0bC1zY3JvbGxiYXJzLXBv
c2l0aW9uZWQtaW50ZXJzZWN0LXNjcm9sbGJhcnMuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwi
YWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwi
cnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ctZWxlbWVudEZyb21Qb2ludC5odG1sIjp7ImV4cGVjdGVk
IjoiRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwicnRsLXNjcm9sbGJh
cnMtaWZyYW1lLXNjcm9sbGVkLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklN
QUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZf
cGVyY2VudCI6MC4wMX0sInJ0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2ltcGxlLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0
X3R5cGUiOlsiIT0iXX0sInJ0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2Nyb2xsLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0
X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxiYXJzLXRleHQtc2VsZWN0aW9uLXNjcm9sbGVkLmh0
bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1
ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4wMX0sInJ0bC1z
Y3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0LXJpZ2h0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0s
InJ0bC1zY3JvbGxiYXJzLW92ZXJmbG93LWNvbnRlbnRzLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFH
RSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0i
XX0sInJ0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXBvc2l0aW9uLWFic29sdXRlLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0
X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxiYXJzLW92ZXJmbG93LXRleHQtc2VsZWN0aW9uLXNj
cm9sbGVkLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3Rk
ZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxiYXJzLW92ZXJmbG93
Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0
cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInJ0bC1zY3JvbGxiYXJzLWxpc3Rib3gtc2VsZWN0
LWxlZnQuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRl
cnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwicnRsLXNjcm9sbGJhcnMtb3ZlcmZsb3ct
c2ltcGxlLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3Rk
ZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiIT0iXX0sInJ0bC1zY3JvbGxiYXJzLW92ZXJmbG93
LXBhZGRpbmcuaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoiUEFTUyIsImhhc19z
dGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwicnRsLXNjcm9sbGJhcnMtYWx0ZXJu
YXRlLWJvZHktZGlyLWF0dHItZG9lcy1ub3QtdXBkYXRlLXNjcm9sbGJhci1wbGFjZW1lbnQtMi5o
dG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1
ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJydGwtc2Nyb2xsYmFycy1wb3NpdGlvbi1maXhlZC5o
dG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRy
dWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDF9LCJydGwt
c2Nyb2xsYmFycy1vdmVyZmxvdy1kaXItcnRsLmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFj
dHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX0sInJ0
bC1zY3JvbGxiYXJzLWxpc3Rib3guaHRtbCI6eyJleHBlY3RlZCI6IklNQUdFIiwiYWN0dWFsIjoi
UEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfSwicnRsLXNjcm9s
bGJhcnMtYWx0ZXJuYXRlLWlmcmFtZS1ib2R5LWRpci1hdHRyLWRvZXMtbm90LXVwZGF0ZS1zY3Jv
bGxiYXItcGxhY2VtZW50Lmh0bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdF
IiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVy
Y2VudCI6MC41OH19LCJhbmltYXRpb24iOnsicmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGltZS11
bml0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0
ZGVyciI6dHJ1ZX19LCJyZXBhaW50Ijp7ImJvcmRlci1maXQtbGluZXMuaHRtbCI6eyJleHBlY3Rl
ZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0
X3R5cGUiOlsiPT0iXX0sImhpZHBpLXdyb25nLXJlcGFpbnQtcmVjdC13aGVuLXBhcmVudC1oYXMt
bm9uY29tcG9zaXRpbmctdHJhbnNmb3JtLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFs
IjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJhZGQtdGFibGUtb3ZlcnBhaW50Lmh0bWwiOnsi
ZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
Imxpc3QtaXRlbS1lcXVhbC1zdHlsZS1jaGFuZ2Utbm8tcmVwYWludC5odG1sIjp7ImV4cGVjdGVk
IjoiUEFTUyBGQUlMIiwiYWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9LCJqYXBhbmVz
ZS1ybC1zZWxlY3Rpb24tcmVwYWludC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6
IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwidmVydGljYWwtdGV4dC1yZXBhaW50Lmh0bWwiOnsi
ZXhwZWN0ZWQiOiJQQVNTIEZBSUwiLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
Im9ic2N1cmVkLWJhY2tncm91bmQtbm8tcmVwYWludC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBG
QUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJqYXBhbmVzZS1ybC1zZWxl
Y3Rpb24tY2xlYXIuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFz
X3N0ZGVyciI6dHJ1ZX0sInJlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5odG1s
Ijp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0s
IndyaXRpbmctbW9kZSI6eyJicm9rZW4taWRlb2dyYXBoLXNtYWxsLWNhcHMuaHRtbCI6eyJleHBl
Y3RlZCI6IkZBSUwgSU1BR0UiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImph
cGFuZXNlLWxyLXNlbGVjdGlvbi5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRF
WFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwiamFwYW5lc2UtcmwtdGV4dC5odG1sIjp7ImV4cGVjdGVk
IjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwidmVydGljYWwtc3Vi
c3QtZm9udC12ZXJ0LW5vLWRmbHQuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgSU1BR0UiLCJhY3R1
YWwiOiJQQVNTIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpbIj09Il19LCJqYXBh
bmVzZS1sci10ZXh0Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhh
c19zdGRlcnIiOnRydWV9LCJqYXBhbmVzZS1ybC1zZWxlY3Rpb24uaHRtbCI6eyJleHBlY3RlZCI6
IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImJvcmRlci12ZXJ0aWNh
bC1sci5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJy
Ijp0cnVlfSwiZmFsbGJhY2stb3JpZW50YXRpb24uaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJh
Y3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJkb20iOnsiR2VvbG9jYXRpb24iOnsi
cGFnZS1yZWxvYWQtY2FuY2VsLXBlcm1pc3Npb24tcmVxdWVzdHMuaHRtbCI6eyJleHBlY3RlZCI6
IkZBSUwgVElNRU9VVCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0sInJ0bC1z
Y3JvbGwtdG8tbGVmdG1vc3QtYW5kLXJlc2l6ZS5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFj
dHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibGlua2lmeS1waG9uZS1udW1iZXJzLmh0
bWwiOnsiZXhwZWN0ZWQiOiJJTUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1
ZSwicmVmdGVzdF90eXBlIjpbIj09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4xMX0sIldpbmRv
dyI6eyJ3aW5kb3ctcHJvcGVydGllcy1wZXJmb3JtYW5jZS1yZXNvdXJjZS10aW1pbmcuaHRtbCI6
eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVl
fSwid2luZG93LXByb3BlcnRpZXMtcGVyZm9ybWFuY2UuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mg
RkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwid2luZG93LW9wZW4tc2Vs
Zi1kaXNhbGxvdy1jbG9zZS5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBUSU1FT1VUIENSQVNIIiwi
YWN0dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fSwiUmFuZ2UiOnsiY29tcGFyZUJvdW5k
YXJ5UG9pbnRzLWNvbXBhcmVIb3ctZXhjZXB0aW9uLmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lP
TiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0s
Ik11dGF0aW9uT2JzZXJ2ZXIiOnsiZW5kLW9mLXRhc2stZGVsaXZlcnkuaHRtbCI6eyJleHBlY3Rl
ZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19LCJIVE1MQW5jaG9y
RWxlbWVudCI6eyJhbmNob3Itbm9kb3dubG9hZC1zZXQuaHRtbCI6eyJleHBlY3RlZCI6IkZBSUwi
LCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImFuY2hvci1kb3dubG9hZC5odG1s
Ijp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0s
Im5hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04i
LCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0sImhv
cml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVh
bCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwiSFRNTE1ldGVyRWxlbWVudCI6eyJtZXRlci1v
cHRpbXVtcy5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3Rk
ZXJyIjp0cnVlfSwibWV0ZXItZWxlbWVudC5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVh
bCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfSwibWV0ZXItYXBwZWFyYW5jZXMtY2FwYWNpdHku
aHRtbCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1
ZX0sIm1ldGVyLXN0eWxlcy5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQi
LCJoYXNfc3RkZXJyIjp0cnVlfSwibWV0ZXItZWxlbWVudC1yZXBhaW50LW9uLXVwZGF0ZS12YWx1
ZS5odG1sIjp7ImV4cGVjdGVkIjoiRkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0
cnVlfSwibWV0ZXItYm91bmRhcnktdmFsdWVzLmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0
dWFsIjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJtZXRlci1hcHBlYXJhbmNlcy1yYXRpbmct
cmVsZXZhbmN5Lmh0bWwiOnsiZXhwZWN0ZWQiOiJGQUlMIiwiYWN0dWFsIjoiVEVYVCIsImhhc19z
dGRlcnIiOnRydWV9fSwiZ2MtYXR0cmlidXRlLW5vZGUuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1Mg
RkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0sImJhY2tncm91bmRzIjp7
ImJhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwiOnsiZXhwZWN0ZWQiOiJJ
TUFHRSIsImFjdHVhbCI6IklNQUdFIiwiaGFzX3N0ZGVyciI6dHJ1ZSwicmVmdGVzdF90eXBlIjpb
Ij09Il0sImltYWdlX2RpZmZfcGVyY2VudCI6MC4wMX0sImhpZHBpLWJpdG1hcC1iYWNrZ3JvdW5k
LW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwiOnsiZXhwZWN0ZWQiOiJQQVNTIElNQUdFIiwiYWN0
dWFsIjoiUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfX0sInJl
cGxhY2VkIjp7InByZWZlcnJlZC13aWR0aHMuaHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgRkFJTCIs
ImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfSwicmVwbGFjZWQtYnJlYWtpbmcuaHRt
bCI6eyJleHBlY3RlZCI6IkZBSUwiLCJhY3R1YWwiOiJURVhUIiwiaGFzX3N0ZGVyciI6dHJ1ZX0s
ImJvcmRlci1yYWRpdXMtY2xpcC5odG1sIjp7ImV4cGVjdGVkIjoiUEFTUyBGQUlMIiwiYWN0dWFs
IjoiVEVYVCIsImhhc19zdGRlcnIiOnRydWV9LCJuby1mb2N1cy1yaW5nLWVtYmVkLmh0bWwiOnsi
cmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRJTUVPVVQi
LCJoYXNfc3RkZXJyIjp0cnVlfSwiZnJhbWUtcmVtb3ZlZC1kdXJpbmctcmVzaXplLXNtYWxsZXIu
aHRtbCI6eyJleHBlY3RlZCI6IlBBU1MgQ1JBU0giLCJhY3R1YWwiOiJQQVNTIiwiaGFzX3N0ZGVy
ciI6dHJ1ZX0sImludmFsaWQtb2JqZWN0LXdpdGgtZmFsbGJhY2suaHRtbCI6eyJyZXBvcnQiOiJS
RUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCIsImhhc19zdGRlcnIi
OnRydWV9LCJuby1mb2N1cy1yaW5nLW9iamVjdC5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04i
LCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJUSU1FT1VUIiwiaGFzX3N0ZGVyciI6dHJ1ZX19
LCJjc3MzLXRleHQiOnsiY3NzMy10ZXh0LWRlY29yYXRpb24iOnsidGV4dC1kZWNvcmF0aW9uLXNr
aXAiOnsidGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rLWluaGVyaXQuaHRtbCI6eyJleHBlY3RlZCI6
IklNQUdFIiwiYWN0dWFsIjoiSU1BR0UiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUi
OlsiPT0iXSwiaW1hZ2VfZGlmZl9wZXJjZW50IjowLjAxfX0sIm5vLWdhcC1iZXR3ZWVuLXR3by1y
b3VuZGVkLXRleHRib3hlcy5odG1sIjp7ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFH
RSIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3Bl
cmNlbnQiOjAuMDF9fX0sImJsb2NrIjp7ImZsb2F0Ijp7IjAxNi5odG1sIjp7ImV4cGVjdGVkIjoi
RkFJTCIsImFjdHVhbCI6IlRFWFQiLCJoYXNfc3RkZXJyIjp0cnVlfX0sInBvc2l0aW9uaW5nIjp7
ImZpeGVkLWNvbnRhaW5lci13aXRoLXJlbGF0aXZlLXBhcmVudC5odG1sIjp7ImV4cGVjdGVkIjoi
UEFTUyBJTUFHRSIsImFjdHVhbCI6IlBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5
cGUiOlsiPT0iXX19LCJpbnNpZGUtaW5saW5lcyI6eyJvcGFjaXR5LW9uLWlubGluZS5odG1sIjp7
ImV4cGVjdGVkIjoiSU1BR0UiLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIiOnRydWUsInJl
ZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjIuMTR9fX0sImhpc3Rvcnki
OnsicGFnZS1jYWNoZS13ZWJkYXRhYmFzZS1wZW5kaW5nLXRyYW5zYWN0aW9uLmh0bWwiOnsiZXhw
ZWN0ZWQiOiJQQVNTIFRJTUVPVVQiLCJhY3R1YWwiOiJUSU1FT1VUIiwiaGFzX3N0ZGVyciI6dHJ1
ZX0sImhpc3RvcnktYmFjay13aGlsZS1wZGYtaW4tcGFnZWNhY2hlLmh0bWwiOnsiZXhwZWN0ZWQi
OiJQQVNTIElNQUdFIFRJTUVPVVQgQ1JBU0giLCJhY3R1YWwiOiJJTUFHRSIsImhhc19zdGRlcnIi
OnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuODR9fX19
LCJza2lwcGVkIjoxMzcyLCJudW1fcmVncmVzc2lvbnMiOjE4LCJvdGhlcl9jcmFzaGVzIjp7IkR1
bXBSZW5kZXJUcmVlLTYyNjI1Ijp7fSwiRHVtcFJlbmRlclRyZWUtNjMyMzQiOnt9LCJEdW1wUmVu
ZGVyVHJlZS02MzIwOSI6e30sIkR1bXBSZW5kZXJUcmVlLTYzMTM1Ijp7fX0sImludGVycnVwdGVk
IjpmYWxzZSwibnVtX21pc3NpbmciOjAsImxheW91dF90ZXN0c19kaXIiOiIvVXNlcnMvbWxhbS9z
cmMvd2Via2l0L09wZW5Tb3VyY2UvTGF5b3V0VGVzdHMiLCJ2ZXJzaW9uIjo0LCJudW1fcGFzc2Vz
IjoxMjQ4MCwicGl4ZWxfdGVzdHNfZW5hYmxlZCI6ZmFsc2UsImRhdGUiOiIwNDoxM1BNIG9uIEph
bnVhcnkgMjcsIDIwMjEiLCJoYXNfcHJldHR5X3BhdGNoIjp0cnVlLCJmaXhhYmxlIjoxNTU2LCJu
dW1fZmxha3kiOjAsInVzZXNfZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBNYW51YWxUZXN0cy9yZXNvdXJjZXMvdGVzdC1yZXN1bHRz
LXBhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBNYW51YWxUZXN0cy9yZXNvdXJjZXMvdGVzdC1yZXN1
bHRzLXBhZ2UuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBNYW51YWxUZXN0cy9yZXNvdXJjZXMvdGVz
dC1yZXN1bHRzLXBhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorCis8c3R5bGU+Citib2R5IHsKKyAgICBtYXJnaW46IDA7CisgICAgZm9u
dC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJpZjsKKyAgICBmb250LXNpemU6IDExcHQ7Cit9
CisKK2JvZHkgPiAqIHsKKyAgICBtYXJnaW4tbGVmdDogNHB4OworICAgIG1hcmdpbi10b3A6IDRw
eDsKK30KKworaDEgeworICAgIGZvbnQtc2l6ZTogMTRwdDsKKyAgICBtYXJnaW4tdG9wOiAxLjVl
bTsKK30KKworcCB7CisgICAgbWFyZ2luLWJvdHRvbTogMC4zZW07Cit9CisKK2EuY2xpY2thYmxl
IHsKKyAgICBjb2xvcjogYmx1ZTsKKyAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgbWFyZ2luLWxl
ZnQ6IDAuMmVtOworfQorCit0cjpub3QoLnJlc3VsdHMtcm93KSB0ZCB7CisgICAgd2hpdGUtc3Bh
Y2U6IG5vd3JhcDsKK30KKwordHI6bm90KC5yZXN1bHRzLXJvdykgdGQ6Zmlyc3Qtb2YtdHlwZSB7
CisgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKK30KKwordGQ6bm90KDpmaXJzdC1vZi10eXBlKSB7
CisgICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsKK30KKwordGgsIHRkIHsKKyAgICBwYWRk
aW5nOiAxcHggNHB4OworICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cit9CisKK3RkOm50aC1jaGls
ZCgxKSB7ICAKKyAgICBtaW4td2lkdGg6IDM1ZW07Cit9CisKK3RoOmVtcHR5LCB0ZDplbXB0eSB7
CisgICAgcGFkZGluZzogMDsKK30KKwordGggeworICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5v
bmU7CisgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKK30KKworZHQgPiBzdXAgeworICAgIHZl
cnRpY2FsLWFsaWduOnRleHQtdG9wOworICAgIGZvbnQtc2l6ZTo3NSU7Cit9CisKK3N1cCA+IGEg
eworICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLmNvbnRlbnQtY29udGFpbmVyIHsK
KyAgICBtaW4taGVpZ2h0OiAwOworfQorCisubm90ZSB7CisgICAgY29sb3I6IGdyYXk7CisgICAg
Zm9udC1zaXplOiBzbWFsbGVyOworfQorCisucmVzdWx0cy1yb3cgeworICAgIGJhY2tncm91bmQt
Y29sb3I6IHdoaXRlOworfQorCisucmVzdWx0cy1yb3cgaWZyYW1lLCAucmVzdWx0cy1yb3cgaW1n
IHsKKyAgICB3aWR0aDogODAwcHg7CisgICAgaGVpZ2h0OiA2MDBweDsKK30KKworLnJlc3VsdHMt
cm93W2RhdGEtZXhwYW5kZWQ9ImZhbHNlIl0geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKKyN0
b29sYmFyIHsKKyAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgdG9wOiAycHg7CisgICAgcmlnaHQ6
IDJweDsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKK30KKworLmZsb2F0aW5nLXBhbmVsIHsKKyAg
ICBwYWRkaW5nOiA2cHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjkpOworICAgIGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsKKyAgICBib3JkZXItcmFkaXVz
OiA0cHg7Cit9CisKKy5leHBhbmQtYnV0dG9uIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0
ZTsKKyAgICB3aWR0aDogMTFweDsKKyAgICBoZWlnaHQ6IDEycHg7CisgICAgYm9yZGVyOiAxcHgg
c29saWQgZ3JheTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgbWFyZ2luOiAwIDNw
eCAwIDA7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIGN1cnNvcjogZGVmYXVsdDsKK30K
KworLmN1cnJlbnQgeworICAgIGNvbG9yOiByZWQ7Cit9CisKKy5jdXJyZW50IC5leHBhbmQtYnV0
dG9uIHsKKyAgICBib3JkZXItY29sb3I6IHJlZDsKK30KKworLmV4cGFuZC1idXR0b24tdGV4dCB7
CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogLTAuM2VtOworICAgIGxlZnQ6IDFw
eDsKK30KKwordGJvZHkgLmZsYWcgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3Rib2R5LmZs
YWdnZWQgLmZsYWcgeworICAgIGRpc3BsYXk6IGlubGluZTsKK30KKworLnN0b3BwZWQtcnVubmlu
Zy1lYXJseS1tZXNzYWdlIHsKKyAgICBib3JkZXI6IDNweCBzb2xpZCAjZDAwOworICAgIGZvbnQt
d2VpZ2h0OiBib2xkOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBwYWRkaW5nOiAz
cHg7Cit9CisKKy5yZXN1bHQtY29udGFpbmVyIHsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTsKKyAgICBtYXJnaW46IDRweDsKK30KKworLnJl
c3VsdC1jb250YWluZXIgaWZyYW1lLCAucmVzdWx0LWNvbnRhaW5lciBpbWcgeworICAgIGJvcmRl
cjogMDsKKyAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCisubGVha3MgPiB0YWJsZSB7Cisg
ICAgbWFyZ2luOiA0cHg7Cit9CisubGVha3MgPiB0ZCB7CisgICAgcGFkZGluZy1sZWZ0OiAyMHB4
OworfQorCisjb3B0aW9ucyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cit9CisKKyNv
cHRpb25zLW1lbnUgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGdyYXk7CisgICAgYm9yZGVyLXJh
ZGl1czogNHB4OworICAgIG1hcmdpbi10b3A6IDFweDsKKyAgICBwYWRkaW5nOiAycHggNHB4Owor
ICAgIGJveC1zaGFkb3c6IDJweCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC42KTsKKyAgICB0cmFu
c2l0aW9uOiBvcGFjaXR5IC4yczsKKyAgICB0ZXh0LWFsaWduOiBsZWZ0OworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICByaWdodDogNHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRl
OworfQorCisjb3B0aW9ucy1tZW51IGxhYmVsIHsKKyAgICBkaXNwbGF5OiBibG9jazsKK30KKwor
LmhpZGRlbi1tZW51IHsKKyAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICBvcGFjaXR5OiAw
OworfQorCisubGFiZWwgeworICAgIHBhZGRpbmctbGVmdDogM3B4OworICAgIGZvbnQtd2VpZ2h0
OiBib2xkOworICAgIGZvbnQtc2l6ZTogc21hbGw7CisgICAgYmFja2dyb3VuZC1jb2xvcjogc2ls
dmVyOworfQorCisucGl4ZWwtem9vbS1jb250YWluZXIgeworICAgIHBvc2l0aW9uOiBmaXhlZDsK
KyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICB3aWR0aDogOTYlOworICAgIG1hcmdpbjog
MTBweDsKKyAgICBwYWRkaW5nOiAxMHB4OworICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OworICAg
IGRpc3BsYXk6IC1tb3otYm94OworICAgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAgIGJhY2tn
cm91bmQtY29sb3I6IHNpbHZlcjsKKyAgICBib3JkZXItcmFkaXVzOiAyMHB4OworICAgIGJvcmRl
cjogMXB4IHNvbGlkIGdyYXk7CisgICAgYm94LXNoYWRvdzogMCAwIDVweCByZ2JhKDAsIDAsIDAs
IDAuNzUpOworfQorCisucGl4ZWwtem9vbS1jb250YWluZXIgPiAqIHsKKyAgICAtd2Via2l0LWJv
eC1mbGV4OiAxOworICAgIC1tb3otYm94LWZsZXg6IDE7CisgICAgYm9yZGVyOiAxcHggc29saWQg
YmxhY2s7CisgICAgbWFyZ2luOiA0cHg7CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKworLnBpeGVsLXpvb20tY29udGFpbmVyIC5zY2FsZWQt
aW1hZ2UtY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgb3ZlcmZsb3c6
IGhpZGRlbjsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDQwMHB4OworfQorCisuc2Nh
bGVkLWltYWdlLWNvbnRhaW5lciA+IGltZyB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAg
IHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRp
bWl6ZS1jb250cmFzdDsKK30KKworI2ZsYWdnZWQtdGVzdC1jb250YWluZXIgeworICAgIHBvc2l0
aW9uOiBmaXhlZDsKKyAgICBib3R0b206IDRweDsKKyAgICByaWdodDogNHB4OworICAgIHdpZHRo
OiA1MCU7CisgICAgbWluLXdpZHRoOiA0MDBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuNzUpOworfQorCisjZmxhZ2dlZC10ZXN0LWNvbnRhaW5lciA+IGgy
IHsKKyAgICBtYXJnaW46IDAgMCA0cHggMDsKK30KKworI2ZsYWdnZWQtdGVzdHMgeworICAgIHBh
ZGRpbmc6IDAgNXB4OworICAgIG1hcmdpbjogMDsKKyAgICBoZWlnaHQ6IDdlbTsKKyAgICBvdmVy
Zmxvdy15OiBzY3JvbGw7Cit9Cis8L3N0eWxlPgorPHN0eWxlIGlkPSJ1bmV4cGVjdGVkLXN0eWxl
Ij48L3N0eWxlPgorCis8c2NyaXB0PgorCitjbGFzcyBVdGlscworeworICAgIHN0YXRpYyBtYXRj
aGVzU2VsZWN0b3Iobm9kZSwgc2VsZWN0b3IpCisgICAgeworICAgICAgICBpZiAobm9kZS5tYXRj
aGVzKQorICAgICAgICAgICAgcmV0dXJuIG5vZGUubWF0Y2hlcyhzZWxlY3Rvcik7CisKKyAgICAg
ICAgaWYgKG5vZGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yKQorICAgICAgICAgICAgcmV0dXJuIG5v
ZGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTsKKworICAgICAgICBpZiAobm9kZS5t
b3pNYXRjaGVzU2VsZWN0b3IpCisgICAgICAgICAgICByZXR1cm4gbm9kZS5tb3pNYXRjaGVzU2Vs
ZWN0b3Ioc2VsZWN0b3IpOworICAgIH0KKworICAgIHN0YXRpYyBwYXJlbnRPZlR5cGUobm9kZSwg
c2VsZWN0b3IpCisgICAgeworICAgICAgICB3aGlsZSAobm9kZSA9IG5vZGUucGFyZW50Tm9kZSkg
eworICAgICAgICAgICAgaWYgKFV0aWxzLm1hdGNoZXNTZWxlY3Rvcihub2RlLCBzZWxlY3Rvcikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgfQorCisgICAgc3RhdGljIHN0cmlwRXh0ZW5zaW9uKHRlc3ROYW1lKQorICAg
IHsKKyAgICAgICAgLy8gVGVtcG9yYXJ5IGZpeCwgYWxzbyBpbiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9jb25zdHJvbGxlcnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5LCBsaW5l
IDk1LgorICAgICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdG8gYXZvaWQgY29uZnVzaW5nIHJlZmVy
ZW5jZSB0byBib3RoIHRlc3QgYW5kIHByb2Nlc3MgbmFtZXMuCisgICAgICAgIGlmIChVdGlscy5z
cGxpdEV4dGVuc2lvbih0ZXN0TmFtZSlbMV0ubGVuZ3RoID4gNSkKKyAgICAgICAgICAgIHJldHVy
biB0ZXN0TmFtZTsKKyAgICAgICAgcmV0dXJuIFV0aWxzLnNwbGl0RXh0ZW5zaW9uKHRlc3ROYW1l
KVswXTsKKyAgICB9CisKKyAgICBzdGF0aWMgc3BsaXRFeHRlbnNpb24odGVzdE5hbWUpCisgICAg
eworICAgICAgICBsZXQgaW5kZXggPSB0ZXN0TmFtZS5sYXN0SW5kZXhPZignLicpOworICAgICAg
ICBpZiAoaW5kZXggPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBbdGVzdE5hbWUsICcnXTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gW3Rlc3ROYW1lLnN1YnN0cmluZygwLCBpbmRleCks
IHRlc3ROYW1lLnN1YnN0cmluZyhpbmRleCArIDEpXTsKKyAgICB9CisKKyAgICBzdGF0aWMgZm9y
RWFjaChub2RlTGlzdCwgaGFuZGxlcikKKyAgICB7CisgICAgICAgIEFycmF5LnByb3RvdHlwZS5m
b3JFYWNoLmNhbGwobm9kZUxpc3QsIGhhbmRsZXIpOworICAgIH0KKworICAgIHN0YXRpYyB0b0Fy
cmF5KG5vZGVMaXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKG5vZGVMaXN0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdHJpbShzdHJpbmcpCisgICAg
eworICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL15bXHNceGEwXSt8W1xzXHhhMF0rJC9n
LCAnJyk7CisgICAgfQorCisgICAgc3RhdGljIGFzeW5jKGZ1bmMsIGFyZ3MpCisgICAgeworICAg
ICAgICBzZXRUaW1lb3V0KCgpID0+IHsgZnVuYy5hcHBseShudWxsLCBhcmdzKTsgfSwgNTApOwor
ICAgIH0KKworICAgIHN0YXRpYyBhcHBlbmRIVE1MKG5vZGUsIGh0bWwpCisgICAgeworICAgICAg
ICBpZiAobm9kZS5pbnNlcnRBZGphY2VudEhUTUwpCisgICAgICAgICAgICBub2RlLmluc2VydEFk
amFjZW50SFRNTCgnYmVmb3JlRW5kJywgaHRtbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG5vZGUuaW5uZXJIVE1MICs9IGh0bWw7CisgICAgfX07CisKK2NsYXNzIFRlc3RSZXN1bHQKK3sK
KyAgICBjb25zdHJ1Y3RvcihpbmZvLCBuYW1lKQorICAgIHsKKyAgICAgICAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgICAgICAgdGhpcy5pbmZvID0gaW5mbzsgLy8gRklYTUU6IG1ha2UgdGhpcyBwcml2
YXRlLgorICAgIH0KKworICAgIGlzRmFpbHVyZUV4cGVjdGVkKCkKKyAgICB7CisgICAgICAgIGxl
dCBhY3R1YWwgPSB0aGlzLmluZm8uYWN0dWFsOyAgICAKKyAgICAgICAgbGV0IGV4cGVjdGVkID0g
dGhpcy5pbmZvLmV4cGVjdGVkIHx8ICdQQVNTJzsKKworICAgICAgICBpZiAoYWN0dWFsICE9ICdT
S0lQJykgeworICAgICAgICAgICAgbGV0IGV4cGVjdGVkQXJyYXkgPSBleHBlY3RlZC5zcGxpdCgn
ICcpOworICAgICAgICAgICAgbGV0IGFjdHVhbEFycmF5ID0gYWN0dWFsLnNwbGl0KCcgJyk7Cisg
ICAgICAgICAgICBmb3IgKGxldCBhY3R1YWxWYWx1ZSBvZiBhY3R1YWxBcnJheSkgeworICAgICAg
ICAgICAgICAgIGlmIChleHBlY3RlZEFycmF5LmluZGV4T2YoYWN0dWFsVmFsdWUpID09IC0xICYm
IChleHBlY3RlZEFycmF5LmluZGV4T2YoJ0ZBSUwnKSA9PSAtMSB8fCAoYWN0dWFsVmFsdWUgIT0g
J1RFWFQnICYmIGFjdHVhbFZhbHVlICE9ICdJTUFHRStURVhUJyAmJiBhY3R1YWxWYWx1ZSAhPSAn
QVVESU8nKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaXNN
aXNzaW5nQWxsUmVzdWx0cygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmFjdHVh
bCA9PSAnTUlTU0lORyc7CisgICAgfQorICAgIAorICAgIGhhc01pc3NpbmdSZXN1bHQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5mby5hY3R1YWwuaW5kZXhPZignTUlTU0lORycpICE9
IC0xOworICAgIH0KKyAgICAKKyAgICBpc0ZsYWtleShwaXhlbFRlc3RzRW5hYmxlZCkKKyAgICB7
CisgICAgICAgIGxldCBhY3R1YWxUb2tlbnMgPSB0aGlzLmluZm8uYWN0dWFsLnNwbGl0KCcgJyk7
CisgICAgICAgIGxldCBwYXNzZWRXaXRoSW1hZ2VPbmx5RmFpbHVyZUluUmV0cnkgPSBhY3R1YWxU
b2tlbnNbMF0gPT0gJ1RFWFQnICYmIGFjdHVhbFRva2Vuc1sxXSA9PSAnSU1BR0UnOworICAgICAg
ICBpZiAoYWN0dWFsVG9rZW5zWzFdICYmIHRoaXMuaW5mby5hY3R1YWwuaW5kZXhPZignUEFTUycp
ICE9IC0xIHx8ICghcGl4ZWxUZXN0c0VuYWJsZWQgJiYgcGFzc2VkV2l0aEltYWdlT25seUZhaWx1
cmVJblJldHJ5KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpc1Bhc3MoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuaW5mby5hY3R1YWwgPT0gJ1BBU1MnOworICAgIH0KKworICAgIGlzVGV4dEZh
aWx1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5mby5hY3R1YWwuaW5kZXhPZign
VEVYVCcpICE9IC0xOworICAgIH0KKworICAgIGlzSW1hZ2VGYWlsdXJlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLmluZm8uYWN0dWFsLmluZGV4T2YoJ0lNQUdFJykgIT0gLTE7CisgICAg
fQorCisgICAgaXNBdWRpb0ZhaWx1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5m
by5hY3R1YWwuaW5kZXhPZignQVVESU8nKSAhPSAtMTsKKyAgICB9CisKKyAgICBoYXNMZWFrKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmluZm8uYWN0dWFsLmluZGV4T2YoJ0xFQUsnKSAh
PSAtMTsKKyAgICB9CisKKyAgICBpc0NyYXNoKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
LmluZm8uYWN0dWFsID09ICdDUkFTSCc7CisgICAgfQorICAgIAorICAgIGlzVGltZW91dCgpCisg
ICAgeworICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmFjdHVhbCA9PSAnVElNRU9VVCc7CisgICAg
fQorICAgIAorICAgIGlzVW5leHBlY3RlZFBhc3MocGl4ZWxUZXN0c0VuYWJsZWQpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5pbmZvLmFjdHVhbCA9PSAnUEFTUycgJiYgdGhpcy5pbmZvLmV4cGVj
dGVkICE9ICdQQVNTJykgeworICAgICAgICAgICAgaWYgKHRoaXMuaW5mby5leHBlY3RlZCAhPSAn
SU1BR0UnIHx8IChwaXhlbFRlc3RzRW5hYmxlZCB8fCB0aGlzLmlzUmVmVGVzdCgpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICBpc1JlZlRlc3QoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICEhdGhpcy5pbmZvLnJlZnRlc3RfdHlwZTsKKyAgICB9CisKKyAgICBpc01pc21hdGNo
UmVmVGVzdCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pc1JlZlRlc3QoKSAmJiB0aGlz
LmluZm8ucmVmdGVzdF90eXBlLmluZGV4T2YoJyE9JykgIT0gLTE7CisgICAgfQorCisgICAgaXNN
YXRjaFJlZlRlc3QoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNSZWZUZXN0KCkgJiYg
dGhpcy5pbmZvLnJlZnRlc3RfdHlwZS5pbmRleE9mKCc9PScpICE9IC0xOworICAgIH0KKyAgICAK
KyAgICBpc01pc3NpbmdUZXh0KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmluZm8uaXNf
bWlzc2luZ190ZXh0OworICAgIH0KKworICAgIGlzTWlzc2luZ0ltYWdlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLmluZm8uaXNfbWlzc2luZ19pbWFnZTsKKyAgICB9CisKKyAgICBpc01p
c3NpbmdBdWRpbygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pbmZvLmlzX21pc3Npbmdf
YXVkaW87CisgICAgfQorICAgIAorICAgIGhhc1N0ZEVycigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5pbmZvLmhhc19zdGRlcnI7CisgICAgfQorfTsKKworY2xhc3MgVGVzdFJlc3VsdHMK
K3sKKyAgICBjb25zdHJ1Y3RvcihyZXN1bHRzKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVzdWx0
cyA9IHJlc3VsdHM7CisKKyAgICAgICAgdGhpcy5jcmFzaFRlc3RzID0gW107CisgICAgICAgIHRo
aXMuY3Jhc2hPdGhlciA9IFtdOworICAgICAgICB0aGlzLm1pc3NpbmdSZXN1bHRzID0gW107Cisg
ICAgICAgIHRoaXMuZmFpbGluZ1Rlc3RzID0gW107CisgICAgICAgIHRoaXMudGVzdHNXaXRoU3Rk
ZXJyID0gW107CisgICAgICAgIHRoaXMudGltZW91dFRlc3RzID0gW107CisgICAgICAgIHRoaXMu
dW5leHBlY3RlZFBhc3NUZXN0cyA9IFtdOworICAgICAgICB0aGlzLmZsYWt5UGFzc1Rlc3RzID0g
W107CisKKyAgICAgICAgdGhpcy5oYXNIdHRwVGVzdHMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5o
YXNJbWFnZUZhaWx1cmVzID0gZmFsc2U7CisgICAgICAgIHRoaXMuaGFzVGV4dEZhaWx1cmVzID0g
ZmFsc2U7CisKKyAgICAgICAgdGhpcy5fdGVzdHNCeU5hbWUgPSBuZXcgTWFwOworCisgICAgICAg
IHRoaXMuX2ZvckVhY2hUZXN0KHRoaXMuX3Jlc3VsdHMudGVzdHMsICcnKTsKKyAgICAgICAgdGhp
cy5fZm9yT3RoZXJDcmFzaGVzKHRoaXMuX3Jlc3VsdHMub3RoZXJfY3Jhc2hlcyk7CisgICAgfQor
ICAgIAorICAgIGRhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHMuZGF0
ZTsKKyAgICB9CisKKyAgICBsYXlvdXRUZXN0c0RpcigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fcmVzdWx0cy5sYXlvdXRfdGVzdHNfZGlyOworICAgIH0KKyAgICAKKyAgICB1c2VzRXhw
ZWN0YXRpb25zRmlsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0cy51c2Vz
X2V4cGVjdGF0aW9uc19maWxlOworICAgIH0KKyAgICAKKyAgICByZXN1bHRGb3JUZXN0KHRlc3RO
YW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHNCeVRlc3RbdGVzdE5hbWVd
OworICAgIH0KKyAgICAKKyAgICB3YXNJbnRlcnJ1cHRlZCgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fcmVzdWx0cy5pbnRlcnJ1cHRlZDsKKyAgICB9CisKKyAgICBoYXNQcmV0dHlQYXRj
aCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWx0cy5oYXNfcHJldHR5X3BhdGNo
OworICAgIH0KKyAgICAKKyAgICBoYXNXRGlmZigpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fcmVzdWx0cy5oYXNfd2RpZmY7CisgICAgfQorICAgIAorICAgIHRlc3RXaXRoTmFtZSh0ZXN0
TmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90ZXN0c0J5TmFtZS5nZXQodGVzdE5h
bWUpOworICAgIH0KKworICAgIF9wcm9jZXNzUmVzdWx0Rm9yVGVzdCh0ZXN0UmVzdWx0KQorICAg
IHsKKyAgICAgICAgdGhpcy5fdGVzdHNCeU5hbWUuc2V0KHRlc3RSZXN1bHQubmFtZSwgdGVzdFJl
c3VsdCk7CisKKyAgICAgICAgbGV0IHRlc3QgPSB0ZXN0UmVzdWx0Lm5hbWU7CisgICAgICAgIGlm
ICh0ZXN0UmVzdWx0Lmhhc1N0ZEVycigpKQorICAgICAgICAgICAgdGhpcy50ZXN0c1dpdGhTdGRl
cnIucHVzaCh0ZXN0UmVzdWx0KTsKKworICAgICAgICB0aGlzLmhhc0h0dHBUZXN0cyB8PSB0ZXN0
LmluZGV4T2YoJ2h0dHAvJykgPT0gMDsKKworICAgICAgICBpZiAodGhpcy51c2VzRXhwZWN0YXRp
b25zRmlsZSgpKQorICAgICAgICAgICAgdGVzdFJlc3VsdC5pc0V4cGVjdGVkID0gdGVzdFJlc3Vs
dC5pc0ZhaWx1cmVFeHBlY3RlZCgpOworICAgICAgICAKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQu
aXNUZXh0RmFpbHVyZSgpKQorICAgICAgICAgICAgdGhpcy5oYXNUZXh0RmFpbHVyZXMgPSB0cnVl
OworCisgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzSW1hZ2VGYWlsdXJlKCkpCisgICAgICAgICAg
ICB0aGlzLmhhc0ltYWdlRmFpbHVyZXMgPSB0cnVlOworCisgICAgICAgIGlmICh0ZXN0UmVzdWx0
LmlzTWlzc2luZ0FsbFJlc3VsdHMoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3Vy
ZSB0aGF0IG5ldy1ydW4td2Via2l0LXRlc3RzIHNwaXRzIG91dCBhbiAtYWN0dWFsLnR4dCBmaWxl
IGZvciB0ZXN0cyB3aXRoIE1JU1NJTkcgcmVzdWx0cy4KKyAgICAgICAgICAgIHRoaXMubWlzc2lu
Z1Jlc3VsdHMucHVzaCh0ZXN0UmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzRmxha2V5KHRoaXMuX3Jlc3VsdHMucGl4ZWxf
dGVzdHNfZW5hYmxlZCkpIHsKKyAgICAgICAgICAgIHRoaXMuZmxha3lQYXNzVGVzdHMucHVzaCh0
ZXN0UmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh0ZXN0UmVzdWx0LmlzUGFzcygpKSB7CisgICAgICAgICAgICBpZiAodGVzdFJlc3VsdC5pc1Vu
ZXhwZWN0ZWRQYXNzKHRoaXMuX3Jlc3VsdHMucGl4ZWxfdGVzdHNfZW5hYmxlZCkpCisgICAgICAg
ICAgICAgICAgdGhpcy51bmV4cGVjdGVkUGFzc1Rlc3RzLnB1c2godGVzdFJlc3VsdCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAodGVzdFJlc3VsdC5pc0Ny
YXNoKCkpIHsKKyAgICAgICAgICAgIHRoaXMuY3Jhc2hUZXN0cy5wdXNoKHRlc3RSZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQu
aXNUaW1lb3V0KCkpIHsKKyAgICAgICAgICAgIHRoaXMudGltZW91dFRlc3RzLnB1c2godGVzdFJl
c3VsdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgdGhp
cy5mYWlsaW5nVGVzdHMucHVzaCh0ZXN0UmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgX2ZvckVh
Y2hUZXN0KHRyZWUsIHByZWZpeCkKKyAgICB7CisgICAgICAgIGZvciAobGV0IGtleSBpbiB0cmVl
KSB7CisgICAgICAgICAgICBsZXQgbmV3UHJlZml4ID0gcHJlZml4ID8gKHByZWZpeCArICcvJyAr
IGtleSkgOiBrZXk7CisgICAgICAgICAgICBpZiAoJ2FjdHVhbCcgaW4gdHJlZVtrZXldKSB7Cisg
ICAgICAgICAgICAgICAgbGV0IHRlc3RPYmplY3QgPSBuZXcgVGVzdFJlc3VsdCh0cmVlW2tleV0s
IG5ld1ByZWZpeCk7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1Jlc3VsdEZvclRlc3Qo
dGVzdE9iamVjdCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9m
b3JFYWNoVGVzdCh0cmVlW2tleV0sIG5ld1ByZWZpeCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBfZm9yT3RoZXJDcmFzaGVzKHRyZWUpCisgICAgeworICAgICAgICBmb3IgKGxldCBrZXkgaW4g
dHJlZSkgeworICAgICAgICAgICAgbGV0IHRlc3RPYmplY3QgPSBuZXcgVGVzdFJlc3VsdCh0cmVl
W2tleV0sIGtleSk7CisgICAgICAgICAgICB0aGlzLmNyYXNoT3RoZXIucHVzaCh0ZXN0T2JqZWN0
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgc29ydEJ5TmFtZSh0ZXN0cykK
KyAgICB7CisgICAgICAgIHRlc3RzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEubmFt
ZS5sb2NhbGVDb21wYXJlKGIubmFtZSkgfSk7CisgICAgfQorCisgICAgc3RhdGljIGhhc1VuZXhw
ZWN0ZWRSZXN1bHQodGVzdHMpCisgICAgeworICAgICAgICByZXR1cm4gdGVzdHMuc29tZShmdW5j
dGlvbiAodGVzdCkgeyByZXR1cm4gIXRlc3QuaXNFeHBlY3RlZDsgfSk7CisgICAgfQorfTsKKwor
Y2xhc3MgVGVzdFJlc3VsdHNDb250cm9sbGVyCit7ICAgICAgICAKKyAgICBjb25zdHJ1Y3Rvcihj
b250YWluZXJFbGVtZW50LCB0ZXN0UmVzdWx0cykKKyAgICB7CisgICAgICAgIHRoaXMuY29udGFp
bmVyRWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQ7CisgICAgICAgIHRoaXMudGVzdFJlc3VsdHMg
PSB0ZXN0UmVzdWx0czsKKworICAgICAgICB0aGlzLnNob3VsZFRvZ2dsZUltYWdlcyA9IHRydWU7
CisgICAgICAgIHRoaXMuX3RvZ2dsaW5nSW1hZ2VJbnRlcnZhbCA9IG51bGw7CisgICAgICAgIAor
ICAgICAgICB0aGlzLl91cGRhdGVQYWdlVGl0bGUoKTsKKworICAgICAgICB0aGlzLmJ1aWxkUmVz
dWx0c1RhYmxlcygpOworICAgICAgICB0aGlzLmhpZGVOb25BcHBsaWNhYmxlVUkoKTsKKyAgICAg
ICAgdGhpcy5zZXR1cFNvcnRpbmcoKTsKKyAgICAgICAgdGhpcy5zZXR1cE9wdGlvbnMoKTsKKyAg
ICB9CisgICAgCisgICAgYnVpbGRSZXN1bHRzVGFibGVzKCkKKyAgICB7CisgICAgICAgIGlmICh0
aGlzLnRlc3RSZXN1bHRzLndhc0ludGVycnVwdGVkKCkpIHsKKyAgICAgICAgICAgIGxldCBpbnRl
cnJ1cHRpb25NZXNzYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICAg
ICAgaW50ZXJydXB0aW9uTWVzc2FnZS50ZXh0Q29udGVudCA9ICdUZXN0aW5nIGV4aXRlZCBlYXJs
eSc7CisgICAgICAgICAgICBpbnRlcnJ1cHRpb25NZXNzYWdlLmNsYXNzTGlzdC5hZGQoJ3N0b3Bw
ZWQtcnVubmluZy1lYXJseS1tZXNzYWdlJyk7CisgICAgICAgICAgICB0aGlzLmNvbnRhaW5lckVs
ZW1lbnQuYXBwZW5kQ2hpbGQoaW50ZXJydXB0aW9uTWVzc2FnZSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy5jcmFzaFRlc3RzLmxlbmd0aCkKKyAgICAgICAgICAg
IHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25lU2VjdGlvbih0
aGlzLnRlc3RSZXN1bHRzLmNyYXNoVGVzdHMsICdjcmFzaC10ZXN0cy10YWJsZScpKTsKKworICAg
ICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy5jcmFzaE90aGVyLmxlbmd0aCkKKyAgICAgICAgICAg
IHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxkT25lU2VjdGlvbih0
aGlzLnRlc3RSZXN1bHRzLmNyYXNoT3RoZXIsICdvdGhlci1jcmFzaC10ZXN0cy10YWJsZScpKTsK
KworICAgICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy5mYWlsaW5nVGVzdHMubGVuZ3RoKQorICAg
ICAgICAgICAgdGhpcy5jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYnVpbGRPbmVT
ZWN0aW9uKHRoaXMudGVzdFJlc3VsdHMuZmFpbGluZ1Rlc3RzLCAncmVzdWx0cy10YWJsZScpKTsK
KworICAgICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy5taXNzaW5nUmVzdWx0cy5sZW5ndGgpCisg
ICAgICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5idWlsZE9u
ZVNlY3Rpb24odGhpcy50ZXN0UmVzdWx0cy5taXNzaW5nUmVzdWx0cywgJ21pc3NpbmctdGFibGUn
KSk7CisKKyAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMudGltZW91dFRlc3RzLmxlbmd0aCkK
KyAgICAgICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJ1aWxk
T25lU2VjdGlvbih0aGlzLnRlc3RSZXN1bHRzLnRpbWVvdXRUZXN0cywgJ3RpbWVvdXQtdGVzdHMt
dGFibGUnKSk7CisKKyAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMudGVzdHNXaXRoU3RkZXJy
Lmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLmJ1aWxkT25lU2VjdGlvbih0aGlzLnRlc3RSZXN1bHRzLnRlc3RzV2l0aFN0ZGVyciwgJ3N0
ZGVyci10YWJsZScpKTsKKworICAgICAgICBpZiAodGhpcy50ZXN0UmVzdWx0cy5mbGFreVBhc3NU
ZXN0cy5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLmNvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5idWlsZE9uZVNlY3Rpb24odGhpcy50ZXN0UmVzdWx0cy5mbGFreVBhc3NUZXN0cywg
J2ZsYWt5LXRlc3RzLXRhYmxlJykpOworCisgICAgICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLnVz
ZXNFeHBlY3RhdGlvbnNGaWxlKCkgJiYgdGhpcy50ZXN0UmVzdWx0cy51bmV4cGVjdGVkUGFzc1Rl
c3RzLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmJ1aWxkT25lU2VjdGlvbih0aGlzLnRlc3RSZXN1bHRzLnVuZXhwZWN0ZWRQYXNzVGVz
dHMsICdwYXNzZXMtdGFibGUnKSk7CisKKyAgICAgICAgaWYgKHRoaXMudGVzdFJlc3VsdHMuaGFz
SHR0cFRlc3RzKSB7CisgICAgICAgICAgICBsZXQgaHR0cGRBY2Nlc3NMb2dMaW5rID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICAgICAgaHR0cGRBY2Nlc3NMb2dMaW5rLmlu
bmVySFRNTCA9ICdodHRwZCBhY2Nlc3MgbG9nOiA8YSBocmVmPSJhY2Nlc3NfbG9nLnR4dCI+YWNj
ZXNzX2xvZy50eHQ8L2E+JzsKKworICAgICAgICAgICAgbGV0IGh0dHBkRXJyb3JMb2dMaW5rID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICAgICAgaHR0cGRFcnJvckxvZ0xp
bmsuaW5uZXJIVE1MID0gJ2h0dHBkIGVycm9yIGxvZzogPGEgaHJlZj0iZXJyb3JfbG9nLnR4dCI+
ZXJyb3JfbG9nLnR4dDwvYT4nOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmNvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoaHR0cGRBY2Nlc3NMb2dMaW5rKTsKKyAgICAgICAgICAg
IHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChodHRwZEVycm9yTG9nTGluayk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMudXBkYXRlVGVzdGxpc3RDb3VudHMoKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgc2VjdGlvbkJ1aWxkZXJDbGFzc0ZvclRhYmxlSUQodGFibGVJ
RCkKKyAgICB7CisgICAgICAgIGNvbnN0IGlkVG9CdWlsZGVyQ2xhc3NNYXAgPSB7CisgICAgICAg
ICAgICAnY3Jhc2gtdGVzdHMtdGFibGUnIDogQ3Jhc2hpbmdUZXN0c1NlY3Rpb25CdWlsZGVyLAor
ICAgICAgICAgICAgJ290aGVyLWNyYXNoLXRlc3RzLXRhYmxlJyA6IE90aGVyQ3Jhc2hlc1NlY3Rp
b25CdWlsZGVyLAorICAgICAgICAgICAgJ3Jlc3VsdHMtdGFibGUnIDogRmFpbGluZ1Rlc3RzU2Vj
dGlvbkJ1aWxkZXIsCisgICAgICAgICAgICAnbWlzc2luZy10YWJsZScgOiBUZXN0c1dpdGhNaXNz
aW5nUmVzdWx0c1NlY3Rpb25CdWlsZGVyLAorICAgICAgICAgICAgJ3RpbWVvdXQtdGVzdHMtdGFi
bGUnIDogVGltZWRPdXRUZXN0c1NlY3Rpb25CdWlsZGVyLAorICAgICAgICAgICAgJ3N0ZGVyci10
YWJsZScgOiBUZXN0c1dpdGhTdGRFcnJTZWN0aW9uQnVpbGRlciwKKyAgICAgICAgICAgICdmbGFr
eS10ZXN0cy10YWJsZScgOiBGbGFreVBhc3NUZXN0c1NlY3Rpb25CdWlsZGVyLAorICAgICAgICAg
ICAgJ3Bhc3Nlcy10YWJsZScgOiBVbmV4cGVjdGVkUGFzc1Rlc3RzU2VjdGlvbkJ1aWxkZXIsCisg
ICAgICAgIH07CisgICAgICAgIHJldHVybiBpZFRvQnVpbGRlckNsYXNzTWFwW3RhYmxlSURdOwor
ICAgIH0KKyAgICAKKyAgICBzZXR1cFNvcnRpbmcoKQorICAgIHsKKyAgICAgICAgbGV0IHJlc3Vs
dHNUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRzLXRhYmxlJyk7CisgICAg
ICAgIGlmICghcmVzdWx0c1RhYmxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICAgICAgLy8gRklYTUU6IE1ha2UgYWxsIHRoZSB0YWJsZXMgc29ydGFibGUuIE1heWJlIFNlY3Rp
b25CdWlsZGVyIHNob3VsZCBwdXQgYSBUYWJsZVNvcnRlciBvbiBlYWNoIHRhYmxlLgorICAgICAg
ICByZXN1bHRzVGFibGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBUYWJsZVNvcnRlci5oYW5k
bGVDbGljaywgZmFsc2UpOworICAgICAgICBUYWJsZVNvcnRlci5zb3J0Q29sdW1uKDApOworICAg
IH0KKyAgICAKKyAgICBoaWRlTm9uQXBwbGljYWJsZVVJKCkKKyAgICB7CisgICAgICAgIC8vIEZJ
WE1FOiBkbyB0aGlzIGFsbCB0aHJvdWdoIGJvZHkgY2xhc3NuYW1lcy4KKyAgICAgICAgaWYgKCF0
aGlzLnRlc3RSZXN1bHRzLmhhc1RleHRGYWlsdXJlcykgeworICAgICAgICAgICAgbGV0IHRleHRS
ZXN1bHRzSGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHQtcmVzdWx0cy1oZWFk
ZXInKTsKKyAgICAgICAgICAgIGlmICh0ZXh0UmVzdWx0c0hlYWRlcikKKyAgICAgICAgICAgICAg
ICB0ZXh0UmVzdWx0c0hlYWRlci50ZXh0Q29udGVudCA9ICcnOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKCF0aGlzLnRlc3RSZXN1bHRzLmhhc0ltYWdlRmFpbHVyZXMpIHsKKyAgICAgICAgICAg
IGxldCBpbWFnZVJlc3VsdHNIZWFkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2Ut
cmVzdWx0cy1oZWFkZXInKTsKKyAgICAgICAgICAgIGlmIChpbWFnZVJlc3VsdHNIZWFkZXIpCisg
ICAgICAgICAgICAgICAgaW1hZ2VSZXN1bHRzSGVhZGVyLnRleHRDb250ZW50ID0gJyc7CisKKyAg
ICAgICAgICAgIFV0aWxzLnBhcmVudE9mVHlwZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9n
Z2xlLWltYWdlcycpLCAnbGFiZWwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHNldHVwT3B0aW9ucygpCisgICAgeworICAgICAgICAvLyBGSVhN
RTogZG8gdGhpcyBhbGwgdGhyb3VnaCBib2R5IGNsYXNzbmFtZXMuCisgICAgICAgIGlmICghdGhp
cy50ZXN0UmVzdWx0cy51c2VzRXhwZWN0YXRpb25zRmlsZSgpKQorICAgICAgICAgICAgVXRpbHMu
cGFyZW50T2ZUeXBlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1bmV4cGVjdGVkLXJlc3VsdHMn
KSwgJ2xhYmVsJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICB9CisKKyAgICBidWlsZE9u
ZVNlY3Rpb24odGVzdHMsIHRhYmxlSUQpCisgICAgeworICAgICAgICBUZXN0UmVzdWx0cy5zb3J0
QnlOYW1lKHRlc3RzKTsKKyAgICAgICAgCisgICAgICAgIGxldCBzZWN0aW9uQnVpbGRlckNsYXNz
ID0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnNlY3Rpb25CdWlsZGVyQ2xhc3NGb3JUYWJsZUlEKHRh
YmxlSUQpOworICAgICAgICBsZXQgc2VjdGlvbkJ1aWxkZXIgPSBuZXcgc2VjdGlvbkJ1aWxkZXJD
bGFzcyh0ZXN0cywgdGFibGVJRCwgdGhpcyk7CisgICAgICAgIHJldHVybiBzZWN0aW9uQnVpbGRl
ci5idWlsZCgpOworICAgIH0KKworICAgIHVwZGF0ZVRlc3RsaXN0Q291bnRzKCkKKyAgICB7Cisg
ICAgICAgIC8vIEZJWE1FOiBkbyB0aGlzIHRocm91Z2ggdGhlIGRhdGEgbW9kZWwsIG5vdCB0aHJv
dWdoIHRoZSBET00uCisgICAgICAgIGxldCBvbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJlcyA9IHRo
aXMub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMoKTsKKyAgICAgICAgVXRpbHMuZm9yRWFjaChk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGVzdC1saXN0LWNvdW50JyksIGNvdW50ID0+IHsK
KyAgICAgICAgICAgIGxldCBjb250YWluZXIgPSBVdGlscy5wYXJlbnRPZlR5cGUoY291bnQsICdz
ZWN0aW9uJyk7CisgICAgICAgICAgICBsZXQgdGVzdENvbnRhaW5lcnM7CisgICAgICAgICAgICBp
ZiAob25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMpCisgICAgICAgICAgICAgICAgdGVzdENvbnRh
aW5lcnMgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgndGJvZHk6bm90KC5leHBlY3RlZCkn
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0Q29udGFpbmVycyA9IGNv
bnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keScpOworCisgICAgICAgICAgICBjb3VudC50
ZXh0Q29udGVudCA9IHRlc3RDb250YWluZXJzLmxlbmd0aDsKKyAgICAgICAgfSkKKyAgICB9Cisg
ICAgCisgICAgZmxhZ0FsbChoZWFkZXJMaW5rKQorICAgIHsKKyAgICAgICAgbGV0IHRlc3RzID0g
dGhpcy52aXNpYmxlVGVzdHMoVXRpbHMucGFyZW50T2ZUeXBlKGhlYWRlckxpbmssICdzZWN0aW9u
JykpOworICAgICAgICBVdGlscy5mb3JFYWNoKHRlc3RzLCB0ZXN0cyA9PiB7CisgICAgICAgICAg
ICBsZXQgc2hvdWxkRmxhZyA9IHRydWU7CisgICAgICAgICAgICB0ZXN0TmF2aWdhdG9yLmZsYWdU
ZXN0KHRlc3RzLCBzaG91bGRGbGFnKTsKKyAgICAgICAgfSkKKyAgICB9CisKKyAgICB1bmZsYWco
ZmxhZykKKyAgICB7CisgICAgICAgIGNvbnN0IHNob3VsZEZsYWcgPSBmYWxzZTsKKyAgICAgICAg
dGVzdE5hdmlnYXRvci5mbGFnVGVzdChVdGlscy5wYXJlbnRPZlR5cGUoZmxhZywgJ3Rib2R5Jyks
IHNob3VsZEZsYWcpOworICAgIH0KKworICAgIHZpc2libGVUZXN0cyhvcHRfY29udGFpbmVyKQor
ICAgIHsKKyAgICAgICAgbGV0IGNvbnRhaW5lciA9IG9wdF9jb250YWluZXIgfHwgZG9jdW1lbnQ7
CisgICAgICAgIGlmICh0aGlzLm9ubHlTaG93VW5leHBlY3RlZEZhaWx1cmVzKCkpCisgICAgICAg
ICAgICByZXR1cm4gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5Om5vdCguZXhwZWN0
ZWQpJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBjb250YWluZXIucXVlcnlT
ZWxlY3RvckFsbCgndGJvZHknKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogdGhpcyBpcyBjb25m
dXNpbmcuIEZsaXAgdGhlIHNlbnNlIGFyb3VuZC4KKyAgICBvbmx5U2hvd1VuZXhwZWN0ZWRGYWls
dXJlcygpCisgICAgeworICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Vu
ZXhwZWN0ZWQtcmVzdWx0cycpLmNoZWNrZWQ7CisgICAgfQorCisgICAgc3RhdGljIF90ZXN0TGlz
dEhlYWRlcih0aXRsZSkKKyAgICB7CisgICAgICAgIGxldCBoZWFkZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdoMScpOworICAgICAgICBoZWFkZXIuaW5uZXJIVE1MID0gdGl0bGUgKyAnICg8
c3BhbiBjbGFzcz10ZXN0LWxpc3QtY291bnQ+PC9zcGFuPik6IDxhIGhyZWY9IiMiIGNsYXNzPWZs
YWctYWxsIG9uY2xpY2s9ImNvbnRyb2xsZXIuZmxhZ0FsbCh0aGlzKSI+ZmxhZyBhbGw8L2E+JzsK
KyAgICAgICAgcmV0dXJuIGhlYWRlcjsKKyAgICB9CisKKyAgICB0ZXN0VG9VUkwodGVzdFJlc3Vs
dCwgbGF5b3V0VGVzdHNQYXRoKQorICAgIHsKKyAgICAgICAgY29uc3QgbWFwcGluZ3MgPSB7Cisg
ICAgICAgICAgICAiaHR0cC90ZXN0cy9zc2wvIjogImh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvc3Ns
LyIsCisgICAgICAgICAgICAiaHR0cC90ZXN0cy8iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwLyIs
CisgICAgICAgICAgICAiaHR0cC93cHQvIjogImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9XZWJLaXQv
IiwKKyAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLyI6ICJodHRw
Oi8vbG9jYWxob3N0Ojg4MDAvIgorICAgICAgICB9OworCisgICAgICAgIGZvciAobGV0IGtleSBp
biBtYXBwaW5ncykgeworICAgICAgICAgICAgaWYgKHRlc3RSZXN1bHQubmFtZS5zdGFydHNXaXRo
KGtleSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmdzW2tleV0gKyB0ZXN0UmVzdWx0
Lm5hbWUuc3Vic3RyaW5nKGtleS5sZW5ndGgpOworCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
ICJmaWxlOi8vIiArIGxheW91dFRlc3RzUGF0aCArICIvIiArIHRlc3RSZXN1bHQubmFtZTsKKyAg
ICB9CisKKyAgICBsYXlvdXRUZXN0VVJMKHRlc3RSZXN1bHQpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5zaG91bGRVc2VUcmFjTGlua3MoKSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmxheW91
dFRlc3RzQmFzZVBhdGgoKSArIHRlc3RSZXN1bHQubmFtZTsKKworICAgICAgICByZXR1cm4gdGhp
cy50ZXN0VG9VUkwodGVzdFJlc3VsdCwgdGhpcy5sYXlvdXRUZXN0c0Jhc2VQYXRoKCkpOworICAg
IH0KKworICAgIGxheW91dFRlc3RzQmFzZVBhdGgoKQorICAgIHsKKyAgICAgICAgbGV0IGJhc2VQ
YXRoOworICAgICAgICBpZiAodGhpcy5zaG91bGRVc2VUcmFjTGlua3MoKSkgeworICAgICAgICAg
ICAgbGV0IHJldmlzaW9uID0gdGhpcy50ZXN0UmVzdWx0cy5yZXZpc2lvbjsKKyAgICAgICAgICAg
IGJhc2VQYXRoID0gJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcnOworICAgICAgICAgICAgYmFzZVBh
dGggKz0gcmV2aXNpb24gPyAoJy9leHBvcnQvJyArIHJldmlzaW9uKSA6ICcvYnJvd3Nlcic7Cisg
ICAgICAgICAgICBiYXNlUGF0aCArPSAnL3RydW5rL0xheW91dFRlc3RzLyc7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYmFzZVBhdGggPSB0aGlzLnRlc3RSZXN1bHRzLmxheW91dFRlc3Rz
RGlyKCkgKyAnLyc7CisKKyAgICAgICAgcmV0dXJuIGJhc2VQYXRoOworICAgIH0KKworICAgIGNv
bnZlcnRUb0xheW91dFRlc3RCYXNlUmVsYXRpdmVVUkwoZnVsbFVSTCkKKyAgICB7CisgICAgICAg
IGlmIChmdWxsVVJMLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkgeworICAgICAgICAgICAgbGV0IHVy
bFByZWZpeCA9ICdmaWxlOi8vJyArIHRoaXMubGF5b3V0VGVzdHNCYXNlUGF0aCgpOworICAgICAg
ICAgICAgaWYgKGZ1bGxVUkwuc3RhcnRzV2l0aCh1cmxQcmVmaXgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmdWxsVVJMLnN1YnN0cmluZyh1cmxQcmVmaXgubGVuZ3RoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZ1bGxVUkw7CisgICAgfQorCisgICAgc2hvdWxkVXNl
VHJhY0xpbmtzKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhdGhpcy50ZXN0UmVzdWx0cy5sYXlv
dXRUZXN0c0RpcigpIHx8ICFsb2NhdGlvbi50b1N0cmluZygpLmluZGV4T2YoJ2ZpbGU6Ly8nKSA9
PSAwOworICAgIH0KKworICAgIGNoZWNrU2VydmVySXNSdW5uaW5nKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuc2hvdWxkVXNlVHJhY0xpbmtzKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbGV0IHVybCA9IGV2ZW50LnRhcmdldC5ocmVmOworICAgICAgICBpZiAodXJs
LnN0YXJ0c1dpdGgoImZpbGU6Ly8iKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICBmZXRjaCh1cmwsIHsgbW9kZTogIm5vLWNv
cnMiIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXJsOwor
ICAgICAgICB9LCAoKSA9PiB7CisgICAgICAgICAgICBhbGVydCgiSFRUUCBzZXJ2ZXIgZG9lcyBu
b3Qgc2VlbSB0byBiZSBydW5uaW5nLCBwbGVhc2UgdXNlIHRoZSBydW4td2Via2l0LWh0dHBkIHNj
cmlwdCIpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICB0ZXN0TGluayh0ZXN0UmVzdWx0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICc8YSBjbGFzcz10ZXN0LWxpbmsgb25jbGljaz0iY29udHJv
bGxlci5jaGVja1NlcnZlcklzUnVubmluZyhldmVudCkiIGhyZWY9IicgKyB0aGlzLmxheW91dFRl
c3RVUkwodGVzdFJlc3VsdCkgKyAnIj4nICsgdGVzdFJlc3VsdC5uYW1lICsgJzwvYT48c3BhbiBj
bGFzcz1mbGFnIG9uY2xpY2s9ImNvbnRyb2xsZXIudW5mbGFnKHRoaXMpIj4gXHUyNjkxPC9zcGFu
Pic7CisgICAgfQorICAgIAorICAgIGV4cGFuZEJ1dHRvblNwYW4oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICc8c3BhbiBjbGFzcz1leHBhbmQtYnV0dG9uIG9uY2xpY2s9ImNvbnRyb2xsZXIudG9n
Z2xlRXhwZWN0YXRpb25zKHRoaXMpIj48c3BhbiBjbGFzcz1leHBhbmQtYnV0dG9uLXRleHQ+Kzwv
c3Bhbj48L3NwYW4+JzsKKyAgICB9CisgICAgCisgICAgc3RhdGljIHJlc3VsdExpbmsodGVzdFBy
ZWZpeCwgc3VmZml4LCBjb250ZW50cykKKyAgICB7CisgICAgICAgIHJldHVybiAnPGEgY2xhc3M9
cmVzdWx0LWxpbmsgaHJlZj0iJyArIHRlc3RQcmVmaXggKyBzdWZmaXggKyAnIiBkYXRhLXByZWZp
eD0iJyArIHRlc3RQcmVmaXggKyAnIj4nICsgY29udGVudHMgKyAnPC9hPiAnOworICAgIH0KKwor
ICAgIHRleHRSZXN1bHRMaW5rcyhwcmVmaXgpCisgICAgeworICAgICAgICBsZXQgaHRtbCA9IFRl
c3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1leHBlY3RlZC50eHQnLCAn
ZXhwZWN0ZWQnKSArCisgICAgICAgICAgICBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGlu
ayhwcmVmaXgsICctYWN0dWFsLnR4dCcsICdhY3R1YWwnKSArCisgICAgICAgICAgICBUZXN0UmVz
dWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayhwcmVmaXgsICctZGlmZi50eHQnLCAnZGlmZicpOwor
CisgICAgICAgIGlmICh0aGlzLnRlc3RSZXN1bHRzLmhhc1ByZXR0eVBhdGNoKCkpCisgICAgICAg
ICAgICBodG1sICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1w
cmV0dHktZGlmZi5odG1sJywgJ3ByZXR0eSBkaWZmJyk7CisKKyAgICAgICAgaWYgKHRoaXMudGVz
dFJlc3VsdHMuaGFzV0RpZmYoKSkKKyAgICAgICAgICAgIGh0bWwgKz0gVGVzdFJlc3VsdHNDb250
cm9sbGVyLnJlc3VsdExpbmsocHJlZml4LCAnLXdkaWZmLmh0bWwnLCAnd2RpZmYnKTsKKworICAg
ICAgICByZXR1cm4gaHRtbDsKKyAgICB9CisKKyAgICBmbGFraW5lc3NEYXNoYm9hcmRVUkxGb3JU
ZXN0cyh0ZXN0T2JqZWN0cykKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBqdXN0IG1hcCBhbmQg
am9pbiBoZXJlLgorICAgICAgICBsZXQgdGVzdExpc3QgPSAnJzsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCB0ZXN0T2JqZWN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdGVzdExp
c3QgKz0gdGVzdE9iamVjdHNbaV0ubmFtZTsKKworICAgICAgICAgICAgaWYgKGkgIT0gdGVzdE9i
amVjdHMubGVuZ3RoIC0gMSkKKyAgICAgICAgICAgICAgICB0ZXN0TGlzdCArPSAnLCc7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gJ2h0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0
ZT1sYXlvdXQtdGVzdHMmdGVzdD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRlc3RMaXN0KTsKKyAg
ICB9CisKKyAgICBfdXBkYXRlUGFnZVRpdGxlKCkKKyAgICB7CisgICAgICAgIGxldCBkYXRlU3Ry
aW5nID0gdGhpcy50ZXN0UmVzdWx0cy5kYXRlKCk7CisgICAgICAgIGxldCB0aXRsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RpdGxlJyk7CisgICAgICAgIHRpdGxlLnRleHRDb250ZW50ID0g
J0xheW91dCBUZXN0IFJlc3VsdHMgZnJvbSAnICsgZGF0ZVN0cmluZzsKKyAgICAgICAgZG9jdW1l
bnQuaGVhZC5hcHBlbmRDaGlsZCh0aXRsZSk7CisgICAgfQorICAgIAorICAgIC8vIE9wdGlvbnMg
aGFuZGxpbmcuIEZJWE1FOiBtb3ZlIHRvIGEgc2VwYXJhdGUgY2xhc3M/CisgICAgdXBkYXRlQWxs
T3B0aW9ucygpCisgICAgeworICAgICAgICBVdGlscy5mb3JFYWNoKGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJyNvcHRpb25zLW1lbnUgaW5wdXQnKSwgaW5wdXQgPT4geyBpbnB1dC5vbmNoYW5n
ZSgpIH0pOworICAgIH0KKworICAgIHRvZ2dsZU9wdGlvbnNNZW51KCkKKyAgICB7CisgICAgICAg
IGxldCBtZW51ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wdGlvbnMtbWVudScpOworICAg
ICAgICBtZW51LmNsYXNzTmFtZSA9IChtZW51LmNsYXNzTmFtZSA9PSAnaGlkZGVuLW1lbnUnKSA/
ICcnIDogJ2hpZGRlbi1tZW51JzsKKyAgICB9CisKKyAgICBoYW5kbGVUb2dnbGVVc2VOZXdsaW5l
cygpCisgICAgeworICAgICAgICBPcHRpb25Xcml0ZXIuc2F2ZSgpOworICAgICAgICB0ZXN0TmF2
aWdhdG9yLnVwZGF0ZUZsYWdnZWRUZXN0cygpOworICAgIH0KKworICAgIGhhbmRsZVVuZXhwZWN0
ZWRSZXN1bHRzQ2hhbmdlKCkKKyAgICB7CisgICAgICAgIE9wdGlvbldyaXRlci5zYXZlKCk7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZUV4cGVjdGVkRmFpbHVyZXMoKTsKKyAgICB9CisKKyAgICBleHBh
bmRBbGxFeHBlY3RhdGlvbnMoKQorICAgIHsKKyAgICAgICAgbGV0IGV4cGFuZExpbmtzID0gdGhp
cy5fdmlzaWJsZUV4cGFuZExpbmtzKCk7CisgICAgICAgIGZvciAobGV0IGxpbmsgb2YgZXhwYW5k
TGlua3MpCisgICAgICAgICAgICBVdGlscy5hc3luYyhsaW5rID0+IHsgY29udHJvbGxlci5leHBh
bmRFeHBlY3RhdGlvbnMobGluaykgfSwgWyBsaW5rIF0pOworICAgIH0KKworICAgIGNvbGxhcHNl
QWxsRXhwZWN0YXRpb25zKCkKKyAgICB7CisgICAgICAgIGxldCBleHBhbmRMaW5rcyA9IHRoaXMu
X3Zpc2libGVFeHBhbmRMaW5rcygpOworICAgICAgICBmb3IgKGxldCBsaW5rIG9mIGV4cGFuZExp
bmtzKQorICAgICAgICAgICAgVXRpbHMuYXN5bmMobGluayA9PiB7IGNvbnRyb2xsZXIuY29sbGFw
c2VFeHBlY3RhdGlvbnMobGluaykgfSwgWyBsaW5rIF0pOworICAgIH0KKworICAgIGV4cGFuZEV4
cGVjdGF0aW9ucyhleHBhbmRMaW5rKQorICAgIHsKKyAgICAgICAgbGV0IHJvdyA9IFV0aWxzLnBh
cmVudE9mVHlwZShleHBhbmRMaW5rLCAndHInKTsKKyAgICAgICAgbGV0IHBhcmVudFRib2R5ID0g
cm93LnBhcmVudE5vZGU7CisgICAgICAgIGxldCBleGlzdGluZ1Jlc3VsdHNSb3cgPSBwYXJlbnRU
Ym9keS5xdWVyeVNlbGVjdG9yKCcucmVzdWx0cy1yb3cnKTsKKyAgICAKKyAgICAgICAgY29uc3Qg
ZW5EYXNoID0gJ1x1MjAxMyc7CisgICAgICAgIGV4cGFuZExpbmsudGV4dENvbnRlbnQgPSBlbkRh
c2g7CisgICAgICAgIGlmIChleGlzdGluZ1Jlc3VsdHNSb3cpIHsKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUV4cGFuZGVkU3RhdGUoZXhpc3RpbmdSZXN1bHRzUm93LCB0cnVlKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCB0ZXN0TmFtZSA9IHJvdy5nZXRB
dHRyaWJ1dGUoJ2RhdGEtdGVzdC1uYW1lJyk7CisgICAgICAgIGxldCB0ZXN0UmVzdWx0ID0gdGhp
cy50ZXN0UmVzdWx0cy50ZXN0V2l0aE5hbWUodGVzdE5hbWUpOworCisgICAgICAgIGxldCBuZXdS
b3cgPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX2J1aWxkRXhwYW5kZWRSb3dGb3JUZXN0KHRlc3RS
ZXN1bHQsIHJvdyk7CisgICAgICAgIHBhcmVudFRib2R5LmFwcGVuZENoaWxkKG5ld1Jvdyk7CisK
KyAgICAgICAgdGhpcy5fdXBkYXRlRXhwYW5kZWRTdGF0ZShuZXdSb3csIHRydWUpOworCisgICAg
ICAgIHRoaXMuX3VwZGF0ZUltYWdlVG9nZ2xpbmdUaW1lcigpOworICAgIH0KKworICAgIGNvbGxh
cHNlRXhwZWN0YXRpb25zKGV4cGFuZExpbmspCisgICAgeworICAgICAgICBleHBhbmRMaW5rLnRl
eHRDb250ZW50ID0gJysnOworICAgICAgICBsZXQgZXhpc3RpbmdSZXN1bHRzUm93ID0gVXRpbHMu
cGFyZW50T2ZUeXBlKGV4cGFuZExpbmssICd0Ym9keScpLnF1ZXJ5U2VsZWN0b3IoJy5yZXN1bHRz
LXJvdycpOworICAgICAgICBpZiAoZXhpc3RpbmdSZXN1bHRzUm93KQorICAgICAgICAgICAgdGhp
cy5fdXBkYXRlRXhwYW5kZWRTdGF0ZShleGlzdGluZ1Jlc3VsdHNSb3csIGZhbHNlKTsKKyAgICB9
CisKKyAgICB0b2dnbGVFeHBlY3RhdGlvbnMoZWxlbWVudCkKKyAgICB7CisgICAgICAgIGxldCBl
eHBhbmRMaW5rID0gZWxlbWVudDsKKyAgICAgICAgaWYgKGV4cGFuZExpbmsuY2xhc3NOYW1lICE9
ICdleHBhbmQtYnV0dG9uLXRleHQnKQorICAgICAgICAgICAgZXhwYW5kTGluayA9IGV4cGFuZExp
bmsucXVlcnlTZWxlY3RvcignLmV4cGFuZC1idXR0b24tdGV4dCcpOworCisgICAgICAgIGlmIChl
eHBhbmRMaW5rLnRleHRDb250ZW50ID09ICcrJykKKyAgICAgICAgICAgIHRoaXMuZXhwYW5kRXhw
ZWN0YXRpb25zKGV4cGFuZExpbmspOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLmNv
bGxhcHNlRXhwZWN0YXRpb25zKGV4cGFuZExpbmspOworICAgIH0KKworICAgIF91cGRhdGVFeHBh
bmRlZFN0YXRlKHJvdywgaXNFeHBhbmRlZCkKKyAgICB7CisgICAgICAgIHJvdy5zZXRBdHRyaWJ1
dGUoJ2RhdGEtZXhwYW5kZWQnLCBpc0V4cGFuZGVkKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlSW1h
Z2VUb2dnbGluZ1RpbWVyKCk7CisgICAgfQorCisgICAgaGFuZGxlVG9nZ2xlSW1hZ2VzQ2hhbmdl
KCkKKyAgICB7CisgICAgICAgIE9wdGlvbldyaXRlci5zYXZlKCk7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVRvZ2dsaW5nSW1hZ2VzKCk7CisgICAgfQorCisgICAgX3Zpc2libGVFeHBhbmRMaW5rcygp
CisgICAgeworICAgICAgICBpZiAodGhpcy5vbmx5U2hvd1VuZXhwZWN0ZWRGYWlsdXJlcygpKQor
ICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rib2R5Om5vdCgu
ZXhwZWN0ZWQpIC5leHBhbmQtYnV0dG9uLXRleHQnKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5leHBhbmQtYnV0dG9uLXRleHQn
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgX3RvZ2dsaW5nSW1hZ2UocHJlZml4KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPXJlc3VsdC1jb250YWluZXI+PGRpdiBjbGFzcz0ibGFi
ZWwgaW1hZ2VUZXh0Ij48L2Rpdj48aW1nIGNsYXNzPWFuaW1hdGVkSW1hZ2UgZGF0YS1wcmVmaXg9
IicgKyBwcmVmaXggKyAnIj48L2ltZz48L2Rpdj4nOworICAgIH0KKworICAgIF91cGRhdGVUb2dn
bGluZ0ltYWdlcygpCisgICAgeworICAgICAgICB0aGlzLnNob3VsZFRvZ2dsZUltYWdlcyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2dnbGUtaW1hZ2VzJykuY2hlY2tlZDsKKworICAgICAg
ICAvLyBGSVhNRTogdGhpcyBpcyBhbGwgcHJldHR5IGNvbmZ1c2luZy4gU2ltcGxpZnkuCisgICAg
ICAgIGlmICh0aGlzLnNob3VsZFRvZ2dsZUltYWdlcykgeworICAgICAgICAgICAgVXRpbHMuZm9y
RWFjaChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0YWJsZTpub3QoI21pc3NpbmctdGFibGUp
IHRib2R5Om5vdChbbWlzbWF0Y2hyZWZ0ZXN0XSkgYVtocmVmJD0iLnBuZyJdJyksIFRlc3RSZXN1
bHRzQ29udHJvbGxlci5fY29udmVydFRvVG9nZ2xpbmdIYW5kbGVyKGZ1bmN0aW9uKHByZWZpeCkg
eworICAgICAgICAgICAgICAgIHJldHVybiBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGlu
ayhwcmVmaXgsICctZGlmZnMuaHRtbCcsICdpbWFnZXMnKTsKKyAgICAgICAgICAgIH0pKTsKKyAg
ICAgICAgICAgIFV0aWxzLmZvckVhY2goZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGU6
bm90KCNtaXNzaW5nLXRhYmxlKSB0Ym9keTpub3QoW21pc21hdGNocmVmdGVzdF0pIGltZ1tzcmMk
PSIucG5nIl0nKSwgVGVzdFJlc3VsdHNDb250cm9sbGVyLl9jb252ZXJ0VG9Ub2dnbGluZ0hhbmRs
ZXIoVGVzdFJlc3VsdHNDb250cm9sbGVyLl90b2dnbGluZ0ltYWdlKSk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBVdGlscy5mb3JFYWNoKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
J2FbaHJlZiQ9Ii1kaWZmcy5odG1sIl0nKSwgZWxlbWVudCA9PiB7CisgICAgICAgICAgICAgICAg
VGVzdFJlc3VsdHNDb250cm9sbGVyLl9jb252ZXJ0VG9Ob25Ub2dnbGluZ0hhbmRsZXIoZWxlbWVu
dCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIFV0aWxzLmZvckVhY2goZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLmFuaW1hdGVkSW1hZ2UnKSwgVGVzdFJlc3VsdHNDb250cm9sbGVy
Ll9jb252ZXJ0VG9Ob25Ub2dnbGluZ0hhbmRsZXIoZnVuY3Rpb24gKGFic29sdXRlUHJlZml4LCBz
dWZmaXgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGVzdFJlc3VsdHNDb250cm9sbGVyLl9y
ZXN1bHRJZnJhbWUoYWJzb2x1dGVQcmVmaXggKyBzdWZmaXgpOworICAgICAgICAgICAgfSkpOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fdXBkYXRlSW1hZ2VUb2dnbGluZ1RpbWVyKCk7Cisg
ICAgfQorCisgICAgX3VwZGF0ZUV4cGVjdGVkRmFpbHVyZXMoKQorICAgIHsKKyAgICAgICAgLy8g
R3Jvc3MgdG8gZG8gdGhpcyBieSBzZXR0aW5nIHN0eWxlc2hlZXQgdGV4dC4gVXNlIGEgYm9keSBj
bGFzcyEKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VuZXhwZWN0ZWQtc3R5bGUn
KS50ZXh0Q29udGVudCA9IHRoaXMub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMoKSA/ICcuZXhw
ZWN0ZWQgeyBkaXNwbGF5OiBub25lOyB9JyA6ICcnOworCisgICAgICAgIHRoaXMudXBkYXRlVGVz
dGxpc3RDb3VudHMoKTsKKyAgICAgICAgdGVzdE5hdmlnYXRvci5vbmx5U2hvd1VuZXhwZWN0ZWRG
YWlsdXJlc0NoYW5nZWQoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgX2J1aWxkRXhwYW5kZWRSb3dG
b3JUZXN0KHRlc3RSZXN1bHQsIHJvdykKKyAgICB7CisgICAgICAgIGxldCBuZXdSb3cgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworICAgICAgICBuZXdSb3cuY2xhc3NOYW1lID0gJ3Jl
c3VsdHMtcm93JzsKKyAgICAgICAgbGV0IG5ld0NlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd0ZCcpOworICAgICAgICBuZXdDZWxsLmNvbFNwYW4gPSByb3cucXVlcnlTZWxlY3RvckFsbCgn
dGQnKS5sZW5ndGg7CisKKyAgICAgICAgLy8gRklYTUU6IG1pZ3JhdGUgbW9yZSBvZiBjb2RlIHRv
IHVzaW5nIHRlc3RSZXN1bHQgZm9yIGJ1aWxkaW5nIHRoZSBleHBhbmRlZCBjb250ZW50LgorICAg
ICAgICBsZXQgcmVzdWx0TGlua3MgPSByb3cucXVlcnlTZWxlY3RvckFsbCgnLnJlc3VsdC1saW5r
Jyk7CisgICAgICAgIGxldCBoYXNUb2dnbGluZ0ltYWdlcyA9IGZhbHNlOworICAgICAgICBmb3Ig
KGxldCBsaW5rIG9mIHJlc3VsdExpbmtzKSB7CisgICAgICAgICAgICBsZXQgcmVzdWx0OworICAg
ICAgICAgICAgaWYgKGxpbmsudGV4dENvbnRlbnQgPT0gJ2ltYWdlcycpIHsKKyAgICAgICAgICAg
ICAgICBoYXNUb2dnbGluZ0ltYWdlcyA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
VGVzdFJlc3VsdHNDb250cm9sbGVyLl90b2dnbGluZ0ltYWdlKGxpbmsuZ2V0QXR0cmlidXRlKCdk
YXRhLXByZWZpeCcpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5fcmVzdWx0SWZyYW1lKGxpbmsuaHJlZik7CisKKyAg
ICAgICAgICAgIFV0aWxzLmFwcGVuZEhUTUwobmV3Q2VsbCwgcmVzdWx0KTsgICAgCisgICAgICAg
IH0KKworICAgICAgICBpZiAodGVzdFJlc3VsdC5oYXNMZWFrKCkpCisgICAgICAgICAgICBuZXdD
ZWxsLmFwcGVuZENoaWxkKFRlc3RSZXN1bHRzQ29udHJvbGxlci5fbWFrZUxlYWtzQ2VsbCh0ZXN0
UmVzdWx0KSk7CisKKyAgICAgICAgbmV3Um93LmFwcGVuZENoaWxkKG5ld0NlbGwpOworCisgICAg
ICAgIHJldHVybiBuZXdSb3c7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBfbWFrZUxlYWtzQ2Vs
bCh0ZXN0UmVzdWx0KQorICAgIHsKKyAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ3Jlc3Vs
dC1jb250YWluZXIgbGVha3MnOworICAgICAgICAKKyAgICAgICAgbGV0IGxhYmVsID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdsYWJl
bCc7CisgICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gIkxlYWtzIjsKKyAgICAgICAgY29udGFp
bmVyLmFwcGVuZENoaWxkKGxhYmVsKTsKKworICAgICAgICBsZXQgbGVha3NUYWJsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7CisgICAgICAgIAorICAgICAgICBmb3IgKGxldCBs
ZWFrIG9mIHRlc3RSZXN1bHQuaW5mby5sZWFrcykgeworICAgICAgICAgICAgbGV0IGxlYWtSb3cg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOworCisgICAgICAgICAgICBmb3IgKGxldCBs
ZWFrZWRPYmplY3RUeXBlIGluIGxlYWspIHsKKyAgICAgICAgICAgICAgICBsZXQgdGggPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCd0aCcpOworICAgICAgICAgICAgICAgIHRoLnRleHRDb250ZW50
ID0gbGVha2VkT2JqZWN0VHlwZTsKKyAgICAgICAgICAgICAgICBsZXQgdGQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGxl
dCB1cmwgPSBsZWFrW2xlYWtlZE9iamVjdFR5cGVdOyAvLyBGSVhNRTogd2hlbiB3ZSB0cmFjayBs
ZWFrcyBvdGhlciB0aGFuIGRvY3VtZW50cywgdGhpcyBtaWdodCBub3QgYmUgYSBVUkwuCisgICAg
ICAgICAgICAgICAgdGQudGV4dENvbnRlbnQgPSBjb250cm9sbGVyLmNvbnZlcnRUb0xheW91dFRl
c3RCYXNlUmVsYXRpdmVVUkwodXJsKQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGxlYWtSb3cuYXBwZW5kQ2hpbGQodGgpOworICAgICAgICAgICAgICAgIGxlYWtSb3cuYXBwZW5k
Q2hpbGQodGQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBsZWFr
c1RhYmxlLmFwcGVuZENoaWxkKGxlYWtSb3cpOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGVha3NUYWJsZSk7CisgICAgICAgIHJldHVybiBjb250
YWluZXI7CisgICAgfQorCisgICAgc3RhdGljIF9yZXN1bHRJZnJhbWUoc3JjKQorICAgIHsKKyAg
ICAgICAgLy8gRklYTUU6IHVzZSBhdWRpbyB0YWdzIGZvciBBVURJTyB0ZXN0cz8KKyAgICAgICAg
bGV0IGxheW91dFRlc3RzSW5kZXggPSBzcmMuaW5kZXhPZignTGF5b3V0VGVzdHMnKTsKKyAgICAg
ICAgbGV0IG5hbWU7CisgICAgICAgIGlmIChsYXlvdXRUZXN0c0luZGV4ICE9IC0xKSB7CisgICAg
ICAgICAgICBsZXQgaGFzVHJhYyA9IHNyYy5pbmRleE9mKCd0cmFjLndlYmtpdC5vcmcnKSAhPSAt
MTsKKyAgICAgICAgICAgIGxldCBwcmVmaXggPSBoYXNUcmFjID8gJ3RyYWMud2Via2l0Lm9yZy8u
Li4vJyA6ICcnOworICAgICAgICAgICAgbmFtZSA9IHByZWZpeCArIHNyYy5zdWJzdHJpbmcobGF5
b3V0VGVzdHNJbmRleCArICdMYXlvdXRUZXN0cy8nLmxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBsZXQgbGFzdERhc2hJbmRleCA9IHNyYy5sYXN0SW5kZXhPZignLXByZXR0
eScpOworICAgICAgICAgICAgaWYgKGxhc3REYXNoSW5kZXggPT0gLTEpCisgICAgICAgICAgICAg
ICAgbGFzdERhc2hJbmRleCA9IHNyYy5sYXN0SW5kZXhPZignLScpOworICAgICAgICAgICAgbmFt
ZSA9IHNyYy5zdWJzdHJpbmcobGFzdERhc2hJbmRleCArIDEpOworICAgICAgICB9CisKKyAgICAg
ICAgbGV0IHRhZ05hbWUgPSAoc3JjLmxhc3RJbmRleE9mKCcucG5nJykgPT0gLTEpID8gJ2lmcmFt
ZScgOiAnaW1nJzsKKworICAgICAgICBpZiAodGFnTmFtZSAhPSAnaW1nJykKKyAgICAgICAgICAg
IHNyYyArPSAnP2Zvcm1hdD10eHQnOworICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9cmVzdWx0
LWNvbnRhaW5lcj48ZGl2IGNsYXNzPWxhYmVsPicgKyBuYW1lICsgJzwvZGl2PjwnICsgdGFnTmFt
ZSArICcgc3JjPSInICsgc3JjICsgJyI+PC8nICsgdGFnTmFtZSArICc+PC9kaXY+JzsKKyAgICB9
CisKKworICAgIHN0YXRpYyBfdG9nZ2xlSW1hZ2VzKCkKKyAgICB7CisgICAgICAgIGxldCBpbWFn
ZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYW5pbWF0ZWRJbWFnZScpOworICAgICAg
ICBsZXQgaW1hZ2VUZXh0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbWFnZVRleHQn
KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGltYWdlcy5sZW5ndGg7IGkgPCBsZW47
IGkrKykgeworICAgICAgICAgICAgbGV0IGltYWdlID0gaW1hZ2VzW2ldOworICAgICAgICAgICAg
bGV0IHRleHQgPSBpbWFnZVRleHRzW2ldOworICAgICAgICAgICAgaWYgKHRleHQudGV4dENvbnRl
bnQgPT0gJ0V4cGVjdGVkIEltYWdlJykgeworICAgICAgICAgICAgICAgIHRleHQudGV4dENvbnRl
bnQgPSAnQWN0dWFsIEltYWdlJzsKKyAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBpbWFnZS5n
ZXRBdHRyaWJ1dGUoJ2RhdGEtcHJlZml4JykgKyAnLWFjdHVhbC5wbmcnOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0ZXh0LnRleHRDb250ZW50ID0gJ0V4cGVjdGVkIElt
YWdlJzsKKyAgICAgICAgICAgICAgICBpbWFnZS5zcmMgPSBpbWFnZS5nZXRBdHRyaWJ1dGUoJ2Rh
dGEtcHJlZml4JykgKyAnLWV4cGVjdGVkLnBuZyc7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBfdXBkYXRlSW1hZ2VUb2dnbGluZ1RpbWVyKCkKKyAgICB7CisgICAgICAg
IGxldCBoYXNWaXNpYmxlQW5pbWF0ZWRJbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5y
ZXN1bHRzLXJvd1tkYXRhLWV4cGFuZGVkPSJ0cnVlIl0gLmFuaW1hdGVkSW1hZ2UnKTsKKyAgICAg
ICAgaWYgKCFoYXNWaXNpYmxlQW5pbWF0ZWRJbWFnZSkgeworICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbCh0aGlzLl90b2dnbGluZ0ltYWdlSW50ZXJ2YWwpOworICAgICAgICAgICAgdGhpcy5fdG9n
Z2xpbmdJbWFnZUludGVydmFsID0gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghdGhpcy5fdG9nZ2xpbmdJbWFnZUludGVydmFsKSB7CisgICAgICAg
ICAgICBUZXN0UmVzdWx0c0NvbnRyb2xsZXIuX3RvZ2dsZUltYWdlcygpOworICAgICAgICAgICAg
dGhpcy5fdG9nZ2xpbmdJbWFnZUludGVydmFsID0gc2V0SW50ZXJ2YWwoVGVzdFJlc3VsdHNDb250
cm9sbGVyLl90b2dnbGVJbWFnZXMsIDIwMDApOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IHN0YXRpYyBfZ2V0UmVzdWx0Q29udGFpbmVyKG5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
KG5vZGUudGFnTmFtZSA9PSAnSU1HJykgPyBVdGlscy5wYXJlbnRPZlR5cGUobm9kZSwgJy5yZXN1
bHQtY29udGFpbmVyJykgOiBub2RlOworICAgIH0KKworICAgIHN0YXRpYyBfY29udmVydFRvVG9n
Z2xpbmdIYW5kbGVyKHRvZ2dsaW5nSW1hZ2VGdW5jdGlvbikKKyAgICB7CisgICAgICAgIHJldHVy
biBmdW5jdGlvbihub2RlKSB7CisgICAgICAgICAgICBsZXQgdXJsID0gKG5vZGUudGFnTmFtZSA9
PSAnSU1HJykgPyBub2RlLnNyYyA6IG5vZGUuaHJlZjsKKyAgICAgICAgICAgIGlmICh1cmwubWF0
Y2goJy1leHBlY3RlZC5wbmckJykpCisgICAgICAgICAgICAgICAgVGVzdFJlc3VsdHNDb250cm9s
bGVyLl9nZXRSZXN1bHRDb250YWluZXIobm9kZSkucmVtb3ZlKCk7CisgICAgICAgICAgICBlbHNl
IGlmICh1cmwubWF0Y2goJy1hY3R1YWwucG5nJCcpKSB7CisgICAgICAgICAgICAgICAgbGV0IG5h
bWUgPSBVdGlscy5wYXJlbnRPZlR5cGUobm9kZSwgJ3Rib2R5JykucXVlcnlTZWxlY3RvcignLnRl
c3QtbGluaycpLnRleHRDb250ZW50OworICAgICAgICAgICAgICAgIFRlc3RSZXN1bHRzQ29udHJv
bGxlci5fZ2V0UmVzdWx0Q29udGFpbmVyKG5vZGUpLm91dGVySFRNTCA9IHRvZ2dsaW5nSW1hZ2VG
dW5jdGlvbihVdGlscy5zdHJpcEV4dGVuc2lvbihuYW1lKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIF9jb252ZXJ0VG9Ob25Ub2dnbGluZ0hhbmRs
ZXIocmVzdWx0RnVuY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24obm9kZSkg
eworICAgICAgICAgICAgbGV0IHByZWZpeCA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXByZWZp
eCcpOworICAgICAgICAgICAgVGVzdFJlc3VsdHNDb250cm9sbGVyLl9nZXRSZXN1bHRDb250YWlu
ZXIobm9kZSkub3V0ZXJIVE1MID0gcmVzdWx0RnVuY3Rpb24ocHJlZml4LCAnLWV4cGVjdGVkLnBu
ZycsICdleHBlY3RlZCcpICsgcmVzdWx0RnVuY3Rpb24ocHJlZml4LCAnLWFjdHVhbC5wbmcnLCAn
YWN0dWFsJyk7CisgICAgICAgIH0KKyAgICB9Cit9OworCitjbGFzcyBTZWN0aW9uQnVpbGRlciB7
CisgICAgCisgICAgY29uc3RydWN0b3IodGVzdHMsIHRhYmxlSUQsIHJlc3VsdHNDb250cm9sbGVy
KQorICAgIHsKKyAgICAgICAgdGhpcy5fdGVzdHMgPSB0ZXN0czsKKyAgICAgICAgdGhpcy5fdGFi
bGUgPSBudWxsOworICAgICAgICB0aGlzLl9yZXN1bHRzQ29udHJvbGxlciA9IHJlc3VsdHNDb250
cm9sbGVyOworICAgICAgICB0aGlzLl90YWJsZUlEID0gdGFibGVJRDsKKyAgICB9CisKKyAgICBi
dWlsZCgpCisgICAgeworICAgICAgICBUZXN0UmVzdWx0cy5zb3J0QnlOYW1lKHRoaXMuX3Rlc3Rz
KTsKKyAgICAgICAgCisgICAgICAgIGxldCBzZWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2VjdGlvbicpOworICAgICAgICBzZWN0aW9uLmFwcGVuZENoaWxkKFRlc3RSZXN1bHRzQ29u
dHJvbGxlci5fdGVzdExpc3RIZWFkZXIodGhpcy5zZWN0aW9uVGl0bGUoKSkpOworICAgICAgICBp
ZiAodGhpcy5oaWRlV2hlblNob3dpbmdVbmV4cGVjdGVkUmVzdWx0c09ubHkoKSkKKyAgICAgICAg
ICAgIHNlY3Rpb24uY2xhc3NMaXN0LmFkZCgnZXhwZWN0ZWQnKTsKKworICAgICAgICB0aGlzLl90
YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7CisgICAgICAgIHRoaXMuX3Rh
YmxlLmlkID0gdGhpcy50YWJsZUlEKCk7CisgICAgICAgIHRoaXMuYWRkVGFibGVIZWFkZXIoKTsK
KworICAgICAgICBsZXQgdmlzaWJsZVJlc3VsdHNDb3VudCA9IDA7CisgICAgICAgIGZvciAobGV0
IHRlc3RSZXN1bHQgb2YgdGhpcy5fdGVzdHMpIHsKKyAgICAgICAgICAgIGxldCB0Ym9keSA9IHRo
aXMuY3JlYXRlVGFibGVSb3codGVzdFJlc3VsdCk7CisgICAgICAgICAgICB0aGlzLl90YWJsZS5h
cHBlbmRDaGlsZCh0Ym9keSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdGhpcy5f
cmVzdWx0c0NvbnRyb2xsZXIub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMoKSB8fCB0ZXN0UmVz
dWx0LmlzRXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgKyt2aXNpYmxlUmVzdWx0c0NvdW50Owor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzZWN0aW9uLnF1ZXJ5U2VsZWN0b3IoJy50ZXN0
LWxpc3QtY291bnQnKS50ZXh0Q29udGVudCA9IHZpc2libGVSZXN1bHRzQ291bnQ7CisgICAgICAg
IHNlY3Rpb24uYXBwZW5kQ2hpbGQodGhpcy5fdGFibGUpOworICAgICAgICByZXR1cm4gc2VjdGlv
bjsKKyAgICB9CisKKyAgICBjcmVhdGVUYWJsZVJvdyh0ZXN0UmVzdWx0KQorICAgIHsKKyAgICAg
ICAgbGV0IHRib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGJvZHknKTsKKyAgICAgICAg
aWYgKHRlc3RSZXN1bHQuaXNFeHBlY3RlZCkKKyAgICAgICAgICAgIHRib2R5LmNsYXNzTGlzdC5h
ZGQoJ2V4cGVjdGVkJyk7CisgICAgICAgIAorICAgICAgICBsZXQgcm93ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgndHInKTsKKyAgICAgICAgcm93LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0LW5h
bWUnLCB0ZXN0UmVzdWx0Lm5hbWUpOworICAgICAgICB0Ym9keS5hcHBlbmRDaGlsZChyb3cpOwor
CisgICAgICAgIGxldCB0ZXN0TmFtZUNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcp
OworICAgICAgICB0aGlzLmZpbGxUZXN0Q2VsbCh0ZXN0UmVzdWx0LCB0ZXN0TmFtZUNlbGwpOwor
ICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGVzdE5hbWVDZWxsKTsKKworICAgICAgICBsZXQgcmVz
dWx0Q2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIHRoaXMuZmls
bFRlc3RSZXN1bHRDZWxsKHRlc3RSZXN1bHQsIHJlc3VsdENlbGwpOworICAgICAgICByb3cuYXBw
ZW5kQ2hpbGQocmVzdWx0Q2VsbCk7CisKKyAgICAgICAgbGV0IGhpc3RvcnlDZWxsID0gdGhpcy5j
cmVhdGVIaXN0b3J5Q2VsbCh0ZXN0UmVzdWx0KTsKKyAgICAgICAgaWYgKGhpc3RvcnlDZWxsKQor
ICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGhpc3RvcnlDZWxsKTsKKworICAgICAgICByZXR1
cm4gdGJvZHk7CisgICAgfQorICAgIAorICAgIGhpZGVXaGVuU2hvd2luZ1VuZXhwZWN0ZWRSZXN1
bHRzT25seSgpCisgICAgeworICAgICAgICByZXR1cm4gIVRlc3RSZXN1bHRzLmhhc1VuZXhwZWN0
ZWRSZXN1bHQodGhpcy5fdGVzdHMpOworICAgIH0KKyAgICAKKyAgICBhZGRUYWJsZUhlYWRlcigp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBmaWxsVGVzdENlbGwodGVzdFJlc3VsdCwgY2VsbCkK
KyAgICB7CisgICAgICAgIGxldCB0ZXN0TGluayA9IHRoaXMubGlua2lmeVRlc3ROYW1lKCkgPyB0
aGlzLl9yZXN1bHRzQ29udHJvbGxlci50ZXN0TGluayh0ZXN0UmVzdWx0KSA6IHRlc3RSZXN1bHQu
bmFtZTsKKyAgICAgICAgaWYgKHRoaXMucm93c0FyZUV4cGFuZGFibGUoKSkgeworICAgICAgICAg
ICAgY2VsbC5pbm5lckhUTUwgPSB0aGlzLl9yZXN1bHRzQ29udHJvbGxlci5leHBhbmRCdXR0b25T
cGFuKCkgKyB0ZXN0TGluazsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIGNlbGwuaW5uZXJIVE1MID0gdGVzdExpbms7CisgICAgfQorCisgICAgZmlsbFRlc3RSZXN1
bHRDZWxsKHRlc3RSZXN1bHQsIGNlbGwpCisgICAgeworICAgIH0KKyAgICAKKyAgICBjcmVhdGVI
aXN0b3J5Q2VsbCh0ZXN0UmVzdWx0KQorICAgIHsKKyAgICAgICAgbGV0IGhpc3RvcnlDZWxsID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgaGlzdG9yeUNlbGwuaW5uZXJI
VE1MID0gJzxhIGhyZWY9IicgKyB0aGlzLl9yZXN1bHRzQ29udHJvbGxlci5mbGFraW5lc3NEYXNo
Ym9hcmRVUkxGb3JUZXN0cyhbdGVzdFJlc3VsdF0pICsgJyI+aGlzdG9yeTwvYT4nCisgICAgICAg
IHJldHVybiBoaXN0b3J5Q2VsbDsKKyAgICB9CisgICAgCisgICAgdGFibGVJRCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVJRDsKKyAgICB9CisgICAgCisgICAgcm93c0FyZUV4
cGFuZGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAg
IGxpbmtpZnlUZXN0TmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBzZWN0aW9uVGl0bGUoKSB7IHJldHVybiAnJzsgfQorfTsKKworY2xhc3MgRmFpbHVyZXNT
ZWN0aW9uQnVpbGRlciBleHRlbmRzIFNlY3Rpb25CdWlsZGVyIHsKKyAgICAKKyAgICBhZGRUYWJs
ZUhlYWRlcigpCisgICAgeworICAgICAgICBsZXQgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgndGhlYWQnKTsKKyAgICAgICAgbGV0IGh0bWwgPSAnPHRoPnRlc3Q8L3RoPjx0aCBpZD0i
dGV4dC1yZXN1bHRzLWhlYWRlciI+cmVzdWx0czwvdGg+PHRoIGlkPSJpbWFnZS1yZXN1bHRzLWhl
YWRlciI+aW1hZ2UgcmVzdWx0czwvdGg+JzsKKworICAgICAgICBpZiAodGhpcy5fcmVzdWx0c0Nv
bnRyb2xsZXIudGVzdFJlc3VsdHMudXNlc0V4cGVjdGF0aW9uc0ZpbGUoKSkKKyAgICAgICAgICAg
IGh0bWwgKz0gJzx0aD5hY3R1YWwgZmFpbHVyZTwvdGg+PHRoPmV4cGVjdGVkIGZhaWx1cmU8L3Ro
Pic7CisKKyAgICAgICAgaHRtbCArPSAnPHRoPjxhIGhyZWY9IicgKyB0aGlzLl9yZXN1bHRzQ29u
dHJvbGxlci5mbGFraW5lc3NEYXNoYm9hcmRVUkxGb3JUZXN0cyh0aGlzLl90ZXN0cykgKyAnIj5o
aXN0b3J5PC9hPjwvdGg+JzsKKworICAgICAgICBpZiAodGhpcy50YWJsZUlEKCkgPT0gJ2ZsYWt5
LXRlc3RzLXRhYmxlJykgLy8gRklYTUU6IHVzZSB0aGUgY2xhc3NlcywgTHVrZSEKKyAgICAgICAg
ICAgIGh0bWwgKz0gJzx0aD5mYWlsdXJlczwvdGg+JzsKKworICAgICAgICBoZWFkZXIuaW5uZXJI
VE1MID0gaHRtbDsKKyAgICAgICAgdGhpcy5fdGFibGUuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKKyAg
ICB9CisgICAgCisgICAgY3JlYXRlVGFibGVSb3codGVzdFJlc3VsdCkKKyAgICB7CisgICAgICAg
IGxldCB0Ym9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rib2R5Jyk7CisgICAgICAgIGlm
ICh0ZXN0UmVzdWx0LmlzRXhwZWN0ZWQpCisgICAgICAgICAgICB0Ym9keS5jbGFzc0xpc3QuYWRk
KCdleHBlY3RlZCcpOworICAgICAgICAKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNNaXNtYXRj
aFJlZlRlc3QoKSkKKyAgICAgICAgICAgIHRib2R5LnNldEF0dHJpYnV0ZSgnbWlzbWF0Y2hyZWZ0
ZXN0JywgJ3RydWUnKTsKKworICAgICAgICBsZXQgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndHInKTsKKyAgICAgICAgcm93LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0LW5hbWUnLCB0ZXN0
UmVzdWx0Lm5hbWUpOworICAgICAgICB0Ym9keS5hcHBlbmRDaGlsZChyb3cpOworICAgICAgICAK
KyAgICAgICAgbGV0IHRlc3ROYW1lQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7
CisgICAgICAgIHRoaXMuZmlsbFRlc3RDZWxsKHRlc3RSZXN1bHQsIHRlc3ROYW1lQ2VsbCk7Cisg
ICAgICAgIHJvdy5hcHBlbmRDaGlsZCh0ZXN0TmFtZUNlbGwpOworCisgICAgICAgIGxldCByZXN1
bHRDZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKKyAgICAgICAgdGhpcy5maWxs
VGVzdFJlc3VsdENlbGwodGVzdFJlc3VsdCwgcmVzdWx0Q2VsbCk7CisgICAgICAgIHJvdy5hcHBl
bmRDaGlsZChyZXN1bHRDZWxsKTsKKworICAgICAgICBpZiAodGVzdFJlc3VsdC5pc1RleHRGYWls
dXJlKCkpCisgICAgICAgICAgICB0aGlzLmFwcGVuZFRleHRGYWlsdXJlTGlua3ModGVzdFJlc3Vs
dCwgcmVzdWx0Q2VsbCk7CisKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNBdWRpb0ZhaWx1cmUo
KSkKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kQXVkaW9GYWlsdXJlTGlua3ModGVzdFJlc3VsdCwg
cmVzdWx0Q2VsbCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQuaGFzTWlz
c2luZ1Jlc3VsdCgpKQorICAgICAgICAgICAgdGhpcy5hcHBlbmRBY3R1YWxPbmx5TGlua3ModGVz
dFJlc3VsdCwgcmVzdWx0Q2VsbCk7CisKKyAgICAgICAgbGV0IGFjdHVhbFRva2VucyA9IHRlc3RS
ZXN1bHQuaW5mby5hY3R1YWwuc3BsaXQoL1xzKy8pOworCisgICAgICAgIGxldCB0ZXN0UHJlZml4
ID0gVXRpbHMuc3RyaXBFeHRlbnNpb24odGVzdFJlc3VsdC5uYW1lKTsKKyAgICAgICAgbGV0IGlt
YWdlUmVzdWx0cyA9IHRoaXMuaW1hZ2VSZXN1bHRMaW5rcyh0ZXN0UmVzdWx0LCB0ZXN0UHJlZml4
LCBhY3R1YWxUb2tlbnNbMF0pOworICAgICAgICBpZiAoIWltYWdlUmVzdWx0cyAmJiBhY3R1YWxU
b2tlbnMubGVuZ3RoID4gMSkKKyAgICAgICAgICAgIGltYWdlUmVzdWx0cyA9IHRoaXMuaW1hZ2VS
ZXN1bHRMaW5rcyh0ZXN0UmVzdWx0LCAncmV0cmllcy8nICsgdGVzdFByZWZpeCwgYWN0dWFsVG9r
ZW5zWzFdKTsKKworICAgICAgICBsZXQgaW1hZ2VSZXN1bHRzQ2VsbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RkJyk7CisgICAgICAgIGltYWdlUmVzdWx0c0NlbGwuaW5uZXJIVE1MID0gaW1h
Z2VSZXN1bHRzOworICAgICAgICByb3cuYXBwZW5kQ2hpbGQoaW1hZ2VSZXN1bHRzQ2VsbCk7CisK
KyAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHNDb250cm9sbGVyLnRlc3RSZXN1bHRzLnVzZXNFeHBl
Y3RhdGlvbnNGaWxlKCkgfHwgYWN0dWFsVG9rZW5zLmxlbmd0aCkgeworICAgICAgICAgICAgbGV0
IGFjdHVhbENlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOworICAgICAgICAgICAg
YWN0dWFsQ2VsbC50ZXh0Q29udGVudCA9IHRlc3RSZXN1bHQuaW5mby5hY3R1YWw7CisgICAgICAg
ICAgICByb3cuYXBwZW5kQ2hpbGQoYWN0dWFsQ2VsbCk7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAodGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIudGVzdFJlc3VsdHMudXNlc0V4cGVjdGF0aW9uc0Zp
bGUoKSkgeworICAgICAgICAgICAgbGV0IGV4cGVjdGVkQ2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3RkJyk7CisgICAgICAgICAgICBleHBlY3RlZENlbGwudGV4dENvbnRlbnQgPSB0ZXN0
UmVzdWx0Lmhhc01pc3NpbmdSZXN1bHQoKSA/ICcnIDogdGVzdFJlc3VsdC5pbmZvLmV4cGVjdGVk
OworICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGV4cGVjdGVkQ2VsbCk7CisgICAgICAgIH0K
KworICAgICAgICBsZXQgaGlzdG9yeUNlbGwgPSB0aGlzLmNyZWF0ZUhpc3RvcnlDZWxsKHRlc3RS
ZXN1bHQpOworICAgICAgICBpZiAoaGlzdG9yeUNlbGwpCisgICAgICAgICAgICByb3cuYXBwZW5k
Q2hpbGQoaGlzdG9yeUNlbGwpOworCisgICAgICAgIHJldHVybiB0Ym9keTsKKyAgICB9CisKKyAg
ICBhcHBlbmRUZXh0RmFpbHVyZUxpbmtzKHRlc3RSZXN1bHQsIGNlbGwpCisgICAgeworICAgICAg
ICBjZWxsLmlubmVySFRNTCArPSB0aGlzLl9yZXN1bHRzQ29udHJvbGxlci50ZXh0UmVzdWx0TGlu
a3MoVXRpbHMuc3RyaXBFeHRlbnNpb24odGVzdFJlc3VsdC5uYW1lKSk7CisgICAgfQorICAgIAor
ICAgIGFwcGVuZEF1ZGlvRmFpbHVyZUxpbmtzKHRlc3RSZXN1bHQsIGNlbGwpCisgICAgeworICAg
ICAgICBsZXQgcHJlZml4ID0gVXRpbHMuc3RyaXBFeHRlbnNpb24odGVzdFJlc3VsdC5uYW1lKTsK
KyAgICAgICAgY2VsbC5pbm5lckhUTUwgKz0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExp
bmsocHJlZml4LCAnLWV4cGVjdGVkLndhdicsICdleHBlY3RlZCBhdWRpbycpCisgICAgICAgICAg
ICArIFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1hY3R1YWwud2F2
JywgJ2FjdHVhbCBhdWRpbycpCisgICAgICAgICAgICArIFRlc3RSZXN1bHRzQ29udHJvbGxlci5y
ZXN1bHRMaW5rKHByZWZpeCwgJy1kaWZmLnR4dCcsICd0ZXh0dWFsIGRpZmYnKTsKKyAgICB9Cisg
ICAgCisgICAgYXBwZW5kQWN0dWFsT25seUxpbmtzKHRlc3RSZXN1bHQsIGNlbGwpCisgICAgewor
ICAgICAgICBsZXQgcHJlZml4ID0gVXRpbHMuc3RyaXBFeHRlbnNpb24odGVzdFJlc3VsdC5uYW1l
KTsKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQuaXNNaXNzaW5nQXVkaW8oKSkKKyAgICAgICAgICAg
IGNlbGwuaW5uZXJIVE1MICs9IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZp
eCwgJy1hY3R1YWwud2F2JywgJ2F1ZGlvIHJlc3VsdCcpOworCisgICAgICAgIGlmICh0ZXN0UmVz
dWx0LmlzTWlzc2luZ1RleHQoKSkKKyAgICAgICAgICAgIGNlbGwuaW5uZXJIVE1MICs9IFRlc3RS
ZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHByZWZpeCwgJy1hY3R1YWwudHh0JywgJ3Jlc3Vs
dCcpOworICAgIH0KKworICAgIGltYWdlUmVzdWx0TGlua3ModGVzdFJlc3VsdCwgdGVzdFByZWZp
eCwgcmVzdWx0VG9rZW4pCisgICAgeworICAgICAgICBsZXQgcmVzdWx0ID0gJyc7CisgICAgICAg
IGlmIChyZXN1bHRUb2tlbi5pbmRleE9mKCdJTUFHRScpICE9IC0xKSB7CisgICAgICAgICAgICBs
ZXQgdGVzdEV4dGVuc2lvbiA9IFV0aWxzLnNwbGl0RXh0ZW5zaW9uKHRlc3RSZXN1bHQubmFtZSlb
MV07CisKKyAgICAgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzTWlzbWF0Y2hSZWZUZXN0KCkpIHsK
KyAgICAgICAgICAgICAgICByZXN1bHQgKz0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExp
bmsodGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIubGF5b3V0VGVzdHNCYXNlUGF0aCgpICsgdGVzdFBy
ZWZpeCwgJy1leHBlY3RlZC1taXNtYXRjaC4nICsgdGVzdEV4dGVuc2lvbiwgJ3JlZiBtaXNtYXRj
aCcpOworICAgICAgICAgICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVz
dWx0TGluayh0ZXN0UHJlZml4LCAnLWFjdHVhbC5wbmcnLCAnYWN0dWFsJyk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0ZXN0UmVzdWx0LmlzTWF0Y2hSZWZUZXN0
KCkpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIu
cmVzdWx0TGluayh0aGlzLl9yZXN1bHRzQ29udHJvbGxlci5sYXlvdXRUZXN0c0Jhc2VQYXRoKCkg
KyB0ZXN0UHJlZml4LCAnLWV4cGVjdGVkLicgKyB0ZXN0RXh0ZW5zaW9uLCAncmVmZXJlbmNlJyk7
CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVzdWx0c0NvbnRyb2xsZXIuc2hvdWxkVG9n
Z2xlSW1hZ2VzKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gVGVzdFJlc3VsdHNDb250
cm9sbGVyLnJlc3VsdExpbmsodGVzdFByZWZpeCwgJy1kaWZmcy5odG1sJywgJ2ltYWdlcycpOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gVGVz
dFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsodGVzdFByZWZpeCwgJy1leHBlY3RlZC5wbmcn
LCAnZXhwZWN0ZWQnKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IFRlc3RSZXN1bHRz
Q29udHJvbGxlci5yZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctYWN0dWFsLnBuZycsICdhY3R1YWwn
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsZXQgZGlmZiA9IHRlc3RS
ZXN1bHQuaW5mby5pbWFnZV9kaWZmX3BlcmNlbnQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9
IFRlc3RSZXN1bHRzQ29udHJvbGxlci5yZXN1bHRMaW5rKHRlc3RQcmVmaXgsICctZGlmZi5wbmcn
LCAnZGlmZiAoJyArIGRpZmYgKyAnJSknKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKHRlc3RSZXN1bHQuaGFzTWlzc2luZ1Jlc3VsdCgpICYmIHRlc3RS
ZXN1bHQuaXNNaXNzaW5nSW1hZ2UoKSkKKyAgICAgICAgICAgIHJlc3VsdCArPSBUZXN0UmVzdWx0
c0NvbnRyb2xsZXIucmVzdWx0TGluayh0ZXN0UHJlZml4LCAnLWFjdHVhbC5wbmcnLCAncG5nIHJl
c3VsdCcpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9OworCitj
bGFzcyBGYWlsaW5nVGVzdHNTZWN0aW9uQnVpbGRlciBleHRlbmRzIEZhaWx1cmVzU2VjdGlvbkJ1
aWxkZXIgeworICAgIHNlY3Rpb25UaXRsZSgpIHsgcmV0dXJuICdUZXN0cyB0aGF0IGZhaWxlZCB0
ZXh0L3BpeGVsL2F1ZGlvIGRpZmYnOyB9Cit9OworCitjbGFzcyBUZXN0c1dpdGhNaXNzaW5nUmVz
dWx0c1NlY3Rpb25CdWlsZGVyIGV4dGVuZHMgRmFpbHVyZXNTZWN0aW9uQnVpbGRlciB7CisgICAg
c2VjdGlvblRpdGxlKCkgeyByZXR1cm4gJ1Rlc3RzIHRoYXQgaGFkIG5vIGV4cGVjdGVkIHJlc3Vs
dHMgKHByb2JhYmx5IG5ldyknOyB9CisKKyAgICByb3dzQXJlRXhwYW5kYWJsZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKworY2xhc3MgRmxha3lQYXNzVGVzdHNT
ZWN0aW9uQnVpbGRlciBleHRlbmRzIEZhaWx1cmVzU2VjdGlvbkJ1aWxkZXIgeworICAgIHNlY3Rp
b25UaXRsZSgpIHsgcmV0dXJuICdGbGFreSB0ZXN0cyAoZmFpbGVkIHRoZSBmaXJzdCBydW4gYW5k
IHBhc3NlZCBvbiByZXRyeSknOyB9Cit9OworCitjbGFzcyBVbmV4cGVjdGVkUGFzc1Rlc3RzU2Vj
dGlvbkJ1aWxkZXIgZXh0ZW5kcyBTZWN0aW9uQnVpbGRlciB7CisgICAgc2VjdGlvblRpdGxlKCkg
eyByZXR1cm4gJ1Rlc3RzIGV4cGVjdGVkIHRvIGZhaWwgYnV0IHBhc3NlZCc7IH0KKworICAgIGFk
ZFRhYmxlSGVhZGVyKCkKKyAgICB7CisgICAgICAgIGxldCBoZWFkZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd0aGVhZCcpOworICAgICAgICBoZWFkZXIuaW5uZXJIVE1MID0gJzx0aD50ZXN0
PC90aD48dGg+ZXhwZWN0ZWQgZmFpbHVyZTwvdGg+PHRoPmhpc3Rvcnk8L3RoPic7CisgICAgICAg
IHRoaXMuX3RhYmxlLmFwcGVuZENoaWxkKGhlYWRlcik7CisgICAgfQorICAgIAorICAgIGZpbGxU
ZXN0UmVzdWx0Q2VsbCh0ZXN0UmVzdWx0LCBjZWxsKQorICAgIHsKKyAgICAgICAgY2VsbC5pbm5l
ckhUTUwgPSB0ZXN0UmVzdWx0LmluZm8uZXhwZWN0ZWQ7CisgICAgfQorCisgICAgcm93c0FyZUV4
cGFuZGFibGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK2Ns
YXNzIFRlc3RzV2l0aFN0ZEVyclNlY3Rpb25CdWlsZGVyIGV4dGVuZHMgU2VjdGlvbkJ1aWxkZXIg
eworICAgIHNlY3Rpb25UaXRsZSgpIHsgcmV0dXJuICdUZXN0cyB0aGF0IGhhZCBzdGRlcnIgb3V0
cHV0JzsgfQorICAgIGhpZGVXaGVuU2hvd2luZ1VuZXhwZWN0ZWRSZXN1bHRzT25seSgpIHsgcmV0
dXJuIGZhbHNlOyB9CisKKyAgICBmaWxsVGVzdFJlc3VsdENlbGwodGVzdFJlc3VsdCwgY2VsbCkK
KyAgICB7CisgICAgICAgIGNlbGwuaW5uZXJIVE1MID0gVGVzdFJlc3VsdHNDb250cm9sbGVyLnJl
c3VsdExpbmsoVXRpbHMuc3RyaXBFeHRlbnNpb24odGVzdFJlc3VsdC5uYW1lKSwgJy1zdGRlcnIu
dHh0JywgJ3N0ZGVycicpOworICAgIH0KK307CisKK2NsYXNzIFRpbWVkT3V0VGVzdHNTZWN0aW9u
QnVpbGRlciBleHRlbmRzIFNlY3Rpb25CdWlsZGVyIHsKKyAgICBzZWN0aW9uVGl0bGUoKSB7IHJl
dHVybiAnVGVzdHMgdGhhdCB0aW1lZCBvdXQnOyB9CisKKyAgICBmaWxsVGVzdFJlc3VsdENlbGwo
dGVzdFJlc3VsdCwgY2VsbCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBvbmx5IGluY2x1ZGUg
dGltZW91dCBhY3R1YWwvZGlmZiByZXN1bHRzIGhlcmUgaWYgd2UgYWN0dWFsbHkgc3BpdCBvdXQg
cmVzdWx0cyBmb3IgdGltZW91dCB0ZXN0cy4KKyAgICAgICAgY2VsbC5pbm5lckhUTUwgPSB0aGlz
Ll9yZXN1bHRzQ29udHJvbGxlci50ZXh0UmVzdWx0TGlua3MoVXRpbHMuc3RyaXBFeHRlbnNpb24o
dGVzdFJlc3VsdC5uYW1lKSk7CisgICAgfQorfTsKKworY2xhc3MgQ3Jhc2hpbmdUZXN0c1NlY3Rp
b25CdWlsZGVyIGV4dGVuZHMgU2VjdGlvbkJ1aWxkZXIgeworICAgIHNlY3Rpb25UaXRsZSgpIHsg
cmV0dXJuICdUZXN0cyB0aGF0IGNyYXNoZWQnOyB9CisKKyAgICBmaWxsVGVzdFJlc3VsdENlbGwo
dGVzdFJlc3VsdCwgY2VsbCkKKyAgICB7CisgICAgICAgIGNlbGwuaW5uZXJIVE1MID0gVGVzdFJl
c3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsoVXRpbHMuc3RyaXBFeHRlbnNpb24odGVzdFJlc3Vs
dC5uYW1lKSwgJy1jcmFzaC1sb2cudHh0JywgJ2NyYXNoIGxvZycpCisgICAgICAgICAgICAgICAg
ICAgICAgICsgVGVzdFJlc3VsdHNDb250cm9sbGVyLnJlc3VsdExpbmsoVXRpbHMuc3RyaXBFeHRl
bnNpb24odGVzdFJlc3VsdC5uYW1lKSwgJy1zYW1wbGUudHh0JywgJ3NhbXBsZScpOworICAgIH0K
K307CisKK2NsYXNzIE90aGVyQ3Jhc2hlc1NlY3Rpb25CdWlsZGVyIGV4dGVuZHMgU2VjdGlvbkJ1
aWxkZXIgeworICAgIHNlY3Rpb25UaXRsZSgpIHsgcmV0dXJuICdPdGhlciBjcmFzaGVzJzsgfQor
ICAgIGZpbGxUZXN0UmVzdWx0Q2VsbCh0ZXN0UmVzdWx0LCBjZWxsKQorICAgIHsKKyAgICAgICAg
Y2VsbC5pbm5lckhUTUwgPSBUZXN0UmVzdWx0c0NvbnRyb2xsZXIucmVzdWx0TGluayhVdGlscy5z
dHJpcEV4dGVuc2lvbih0ZXN0UmVzdWx0Lm5hbWUpLCAnLWNyYXNoLWxvZy50eHQnLCAnY3Jhc2gg
bG9nJyk7CisgICAgfQorCisgICAgY3JlYXRlSGlzdG9yeUNlbGwodGVzdFJlc3VsdCkKKyAgICB7
CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGxpbmtpZnlUZXN0TmFtZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKworY2xhc3MgUGl4ZWxab29t
ZXIgeworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMuc2hvd09uRGVsYXkg
PSB0cnVlOworICAgICAgICB0aGlzLl96b29tRmFjdG9yID0gNjsKKworICAgICAgICB0aGlzLl9y
ZXN1bHRXaWR0aCA9IDgwMDsKKyAgICAgICAgdGhpcy5fcmVzdWx0SGVpZ2h0ID0gNjAwOworICAg
ICAgICAKKyAgICAgICAgdGhpcy5fcGVyY2VudFggPSAwOworICAgICAgICB0aGlzLl9wZXJjZW50
WSA9IDA7CisKKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywg
dGhpcywgZmFsc2UpOworICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91
dCcsIHRoaXMsIGZhbHNlKTsKKyAgICB9CisKKyAgICBfem9vbWVkUmVzdWx0V2lkdGgoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdFdpZHRoICogdGhpcy5fem9vbUZhY3RvcjsK
KyAgICB9CisgICAgCisgICAgX3pvb21lZFJlc3VsdEhlaWdodCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVzdWx0SGVpZ2h0ICogdGhpcy5fem9vbUZhY3RvcjsKKyAgICB9CisgICAg
CisgICAgX3pvb21JbWFnZUNvbnRhaW5lcih1cmwpCisgICAgeworICAgICAgICBsZXQgY29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGNvbnRhaW5lci5j
bGFzc05hbWUgPSAnem9vbS1pbWFnZS1jb250YWluZXInOworCisgICAgICAgIGxldCB0aXRsZSA9
IHVybC5tYXRjaCgvXC0oW15cLV0qKVwucG5nLylbMV07CisgICAgCisgICAgICAgIGxldCBsYWJl
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBsYWJlbC5jbGFzc05h
bWUgPSAnbGFiZWwnOworICAgICAgICBsYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0aXRsZSkpOworICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGFiZWwpOwor
ICAgIAorICAgICAgICBsZXQgaW1hZ2VDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgaW1hZ2VDb250YWluZXIuY2xhc3NOYW1lID0gJ3NjYWxlZC1pbWFn
ZS1jb250YWluZXInOworICAgIAorICAgICAgICBsZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTsKKyAg
ICAgICAgaW1hZ2Uuc3JjID0gdXJsOworICAgICAgICBpbWFnZS5zdHlsZS53aWR0aCA9IHRoaXMu
X3pvb21lZFJlc3VsdFdpZHRoKCkgKyAncHgnOworICAgICAgICBpbWFnZS5zdHlsZS5oZWlnaHQg
PSB0aGlzLl96b29tZWRSZXN1bHRIZWlnaHQoKSArICdweCc7CisgICAgICAgIGltYWdlLnN0eWxl
LmJvcmRlciA9ICcxcHggc29saWQgYmxhY2snOworICAgICAgICBpbWFnZUNvbnRhaW5lci5hcHBl
bmRDaGlsZChpbWFnZSk7CisgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbWFnZUNvbnRh
aW5lcik7CisgICAgCisgICAgICAgIHJldHVybiBjb250YWluZXI7CisgICAgfQorCisgICAgX2Ny
ZWF0ZUNvbnRhaW5lcihlKQorICAgIHsKKyAgICAgICAgbGV0IHRib2R5ID0gVXRpbHMucGFyZW50
T2ZUeXBlKGUudGFyZ2V0LCAndGJvZHknKTsKKyAgICAgICAgbGV0IHJvdyA9IHRib2R5LnF1ZXJ5
U2VsZWN0b3IoJ3RyJyk7CisgICAgICAgIGxldCBpbWFnZURpZmZMaW5rcyA9IHJvdy5xdWVyeVNl
bGVjdG9yQWxsKCdhW2hyZWYkPSIucG5nIl0nKTsKKyAgICAKKyAgICAgICAgbGV0IGNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBjb250YWluZXIuY2xh
c3NOYW1lID0gJ3BpeGVsLXpvb20tY29udGFpbmVyJzsKKyAgICAKKyAgICAgICAgbGV0IGh0bWwg
PSAnJzsKKyAgICAKKyAgICAgICAgbGV0IHRvZ2dsaW5nSW1hZ2VMaW5rID0gcm93LnF1ZXJ5U2Vs
ZWN0b3IoJ2FbaHJlZiQ9Ii1kaWZmcy5odG1sIl0nKTsKKyAgICAgICAgaWYgKHRvZ2dsaW5nSW1h
Z2VMaW5rKSB7CisgICAgICAgICAgICBsZXQgcHJlZml4ID0gdG9nZ2xpbmdJbWFnZUxpbmsuZ2V0
QXR0cmlidXRlKCdkYXRhLXByZWZpeCcpOworICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENo
aWxkKHRoaXMuX3pvb21JbWFnZUNvbnRhaW5lcihwcmVmaXggKyAnLWV4cGVjdGVkLnBuZycpKTsK
KyAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl96b29tSW1hZ2VDb250YWlu
ZXIocHJlZml4ICsgJy1hY3R1YWwucG5nJykpOworICAgICAgICB9CisgICAgCisgICAgICAgIGZv
ciAobGV0IGxpbmsgb2YgaW1hZ2VEaWZmTGlua3MpCisgICAgICAgICAgICBjb250YWluZXIuYXBw
ZW5kQ2hpbGQodGhpcy5fem9vbUltYWdlQ29udGFpbmVyKGxpbmsuaHJlZikpOworCisgICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKKyAgICAgICAgdGhpcy5fZHJh
d0FsbCgpOworICAgIH0KKworICAgIF9kcmF3KGltYWdlQ29udGFpbmVyKQorICAgIHsKKyAgICAg
ICAgbGV0IGltYWdlID0gaW1hZ2VDb250YWluZXIucXVlcnlTZWxlY3RvcignaW1nJyk7CisgICAg
ICAgIGxldCBjb250YWluZXJCb3VuZHMgPSBpbWFnZUNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKTsKKyAgICAgICAgaW1hZ2Uuc3R5bGUubGVmdCA9IChjb250YWluZXJCb3VuZHMud2lk
dGggLyAyIC0gdGhpcy5fcGVyY2VudFggKiB0aGlzLl96b29tZWRSZXN1bHRXaWR0aCgpKSArICdw
eCc7CisgICAgICAgIGltYWdlLnN0eWxlLnRvcCA9IChjb250YWluZXJCb3VuZHMuaGVpZ2h0IC8g
MiAtIHRoaXMuX3BlcmNlbnRZICogdGhpcy5fem9vbWVkUmVzdWx0SGVpZ2h0KCkpICsgJ3B4JzsK
KyAgICB9CisKKyAgICBfZHJhd0FsbCgpCisgICAgeworICAgICAgICBVdGlscy5mb3JFYWNoKGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waXhlbC16b29tLWNvbnRhaW5lciAuc2NhbGVkLWlt
YWdlLWNvbnRhaW5lcicpLCBlbGVtZW50ID0+IHsgdGhpcy5fZHJhdyhlbGVtZW50KSB9KTsKKyAg
ICB9CisgICAgCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZl
bnQudHlwZSA9PSAnbW91c2Vtb3ZlJykgeworICAgICAgICAgICAgdGhpcy5faGFuZGxlTW91c2VN
b3ZlKGV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChldmVudC50eXBlID09ICdtb3VzZW91dCcpIHsKKyAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1v
dXNlT3V0KGV2ZW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIF9oYW5kbGVNb3VzZU91dChldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC5yZWxh
dGVkVGFyZ2V0ICYmIGV2ZW50LnJlbGF0ZWRUYXJnZXQudGFnTmFtZSAhPSAnSUZSQU1FJykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBJZiBlLnJlbGF0ZWRUYXJnZXQgaXMgbnVs
bCwgd2UndmUgbW91c2VkIG91dCBvZiB0aGUgZG9jdW1lbnQuCisgICAgICAgIGxldCBjb250YWlu
ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGl4ZWwtem9vbS1jb250YWluZXInKTsKKyAg
ICAgICAgaWYgKGNvbnRhaW5lcikKKyAgICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTsKKyAg
ICB9CisKKyAgICBfaGFuZGxlTW91c2VNb3ZlKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRo
aXMuX21vdXNlTW92ZVRpbWVvdXQpIHsKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9t
b3VzZU1vdmVUaW1lb3V0KTsKKyAgICAgICAgICAgIHRoaXMuX21vdXNlTW92ZVRpbWVvdXQgPSAw
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKFV0aWxzLnBhcmVudE9mVHlwZShldmVudC50YXJn
ZXQsICcucGl4ZWwtem9vbS1jb250YWluZXInKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpeGVsLXpvb20t
Y29udGFpbmVyJyk7CisgICAgCisgICAgICAgIGxldCByZXN1bHRDb250YWluZXIgPSAoZXZlbnQu
dGFyZ2V0LmNsYXNzTmFtZSA9PSAncmVzdWx0LWNvbnRhaW5lcicpID8gZXZlbnQudGFyZ2V0IDog
VXRpbHMucGFyZW50T2ZUeXBlKGV2ZW50LnRhcmdldCwgJy5yZXN1bHQtY29udGFpbmVyJyk7Cisg
ICAgICAgIGlmICghcmVzdWx0Q29udGFpbmVyIHx8ICFyZXN1bHRDb250YWluZXIucXVlcnlTZWxl
Y3RvcignaW1nJykpIHsKKyAgICAgICAgICAgIGlmIChjb250YWluZXIpCisgICAgICAgICAgICAg
ICAgY29udGFpbmVyLnJlbW92ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgbGV0IHRhcmdldExvY2F0aW9uID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpOworICAgICAgICB0aGlzLl9wZXJjZW50WCA9IChldmVudC5jbGllbnRYIC0gdGFy
Z2V0TG9jYXRpb24ubGVmdCkgLyB0YXJnZXRMb2NhdGlvbi53aWR0aDsKKyAgICAgICAgdGhpcy5f
cGVyY2VudFkgPSAoZXZlbnQuY2xpZW50WSAtIHRhcmdldExvY2F0aW9uLnRvcCkgLyB0YXJnZXRM
b2NhdGlvbi5oZWlnaHQ7CisKKyAgICAgICAgaWYgKCFjb250YWluZXIpIHsKKyAgICAgICAgICAg
IGlmICh0aGlzLnNob3dPbkRlbGF5KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbW91c2VNb3Zl
VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgICAgICB0aGlzLl9j
cmVhdGVDb250YWluZXIoZXZlbnQpOworICAgICAgICAgICAgICAgIH0sIDQwMCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9jcmVh
dGVDb250YWluZXIoZXZlbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
CisgICAgICAgIHRoaXMuX2RyYXdBbGwoKTsKKyAgICB9Cit9OworCitjbGFzcyBUYWJsZVNvcnRl
cgoreworICAgIHN0YXRpYyBfZm9yd2FyZEFycm93KCkKKyAgICB7CisgICAgICAgIHJldHVybiAn
PHN2ZyBzdHlsZT0id2lkdGg6MTBweDtoZWlnaHQ6MTBweCI+PHBvbHlnb24gcG9pbnRzPSIwLDAg
MTAsMCA1LDEwIiBzdHlsZT0iZmlsbDojY2NjIj48L3N2Zz4nOworICAgIH0KKworICAgIHN0YXRp
YyBfYmFja3dhcmRBcnJvdygpCisgICAgeworICAgICAgICByZXR1cm4gJzxzdmcgc3R5bGU9Indp
ZHRoOjEwcHg7aGVpZ2h0OjEwcHgiPjxwb2x5Z29uIHBvaW50cz0iMCwxMCAxMCwxMCA1LDAiIHN0
eWxlPSJmaWxsOiNjY2MiPjwvc3ZnPic7CisgICAgfQorCisgICAgc3RhdGljIF9zb3J0ZWRDb250
ZW50cyhoZWFkZXIsIGFycm93KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFycm93ICsgJyAnICsg
VXRpbHMudHJpbShoZWFkZXIudGV4dENvbnRlbnQpICsgJyAnICsgYXJyb3c7CisgICAgfQorCisg
ICAgc3RhdGljIF91cGRhdGVIZWFkZXJDbGFzc05hbWVzKG5ld0hlYWRlcikKKyAgICB7CisgICAg
ICAgIGxldCBzb3J0SGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNvcnRIZWFkZXIn
KTsKKyAgICAgICAgaWYgKHNvcnRIZWFkZXIpIHsKKyAgICAgICAgICAgIGlmIChzb3J0SGVhZGVy
ID09IG5ld0hlYWRlcikgeworICAgICAgICAgICAgICAgIGxldCBpc0FscmVhZHlSZXZlcnNlZCA9
IHNvcnRIZWFkZXIuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZXZlcnNlZCcpOworICAgICAgICAgICAg
ICAgIGlmIChpc0FscmVhZHlSZXZlcnNlZCkKKyAgICAgICAgICAgICAgICAgICAgc29ydEhlYWRl
ci5jbGFzc0xpc3QucmVtb3ZlKCdyZXZlcnNlZCcpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgc29ydEhlYWRlci5jbGFzc0xpc3QuYWRkKCdyZXZlcnNlZCcpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzb3J0SGVhZGVyLnRleHRDb250
ZW50ID0gc29ydEhlYWRlci50ZXh0Q29udGVudDsKKyAgICAgICAgICAgICAgICBzb3J0SGVhZGVy
LmNsYXNzTGlzdC5yZW1vdmUoJ3NvcnRIZWFkZXInKTsKKyAgICAgICAgICAgICAgICBzb3J0SGVh
ZGVyLmNsYXNzTGlzdC5yZW1vdmUoJ3JldmVyc2VkJyk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBuZXdIZWFkZXIuY2xhc3NMaXN0LmFkZCgnc29ydEhlYWRlcicpOworICAg
IH0KKworICAgIHN0YXRpYyBfdGV4dENvbnRlbnQodGJvZHlSb3csIGNvbHVtbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0Ym9keVJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpW2NvbHVtbl0udGV4
dENvbnRlbnQ7CisgICAgfQorCisgICAgc3RhdGljIF9zb3J0Um93cyhuZXdIZWFkZXIsIHJldmVy
c2VkKQorICAgIHsKKyAgICAgICAgbGV0IHRlc3RzVGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0cy10YWJsZScpOworICAgICAgICBsZXQgaGVhZGVycyA9IFV0aWxzLnRvQXJy
YXkodGVzdHNUYWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpKTsKKyAgICAgICAgbGV0IHNvcnRD
b2x1bW4gPSBoZWFkZXJzLmluZGV4T2YobmV3SGVhZGVyKTsKKworICAgICAgICBsZXQgcm93cyA9
IFV0aWxzLnRvQXJyYXkodGVzdHNUYWJsZS5xdWVyeVNlbGVjdG9yQWxsKCd0Ym9keScpKTsKKwor
ICAgICAgICByb3dzLnNvcnQoZnVuY3Rpb24oYSwgYikgeworICAgICAgICAgICAgLy8gT25seSBu
ZWVkIHRvIHN1cHBvcnQgbGV4aWNvZ3JhcGhpYyBzb3J0IGZvciBub3cuCisgICAgICAgICAgICBs
ZXQgYVRleHQgPSBUYWJsZVNvcnRlci5fdGV4dENvbnRlbnQoYSwgc29ydENvbHVtbik7CisgICAg
ICAgICAgICBsZXQgYlRleHQgPSBUYWJsZVNvcnRlci5fdGV4dENvbnRlbnQoYiwgc29ydENvbHVt
bik7CisgICAgICAgIAorICAgICAgICAgICAgLy8gRm9yd2FyZCBzb3J0IGVxdWFsIHZhbHVlcyBi
eSB0ZXN0IG5hbWUuCisgICAgICAgICAgICBpZiAoc29ydENvbHVtbiAmJiBhVGV4dCA9PSBiVGV4
dCkgeworICAgICAgICAgICAgICAgIGxldCBhVGVzdE5hbWUgPSBUYWJsZVNvcnRlci5fdGV4dENv
bnRlbnQoYSwgMCk7CisgICAgICAgICAgICAgICAgbGV0IGJUZXN0TmFtZSA9IFRhYmxlU29ydGVy
Ll90ZXh0Q29udGVudChiLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoYVRlc3ROYW1lID09IGJU
ZXN0TmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGFUZXN0TmFtZSA8IGJUZXN0TmFtZSA/IC0xIDogMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKHJldmVyc2VkKQorICAgICAgICAgICAgICAgIHJldHVybiBhVGV4dCA8
IGJUZXh0ID8gMSA6IC0xOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVy
biBhVGV4dCA8IGJUZXh0ID8gLTEgOiAxOworICAgICAgICB9KTsKKworICAgICAgICBmb3IgKGxl
dCByb3cgb2Ygcm93cykKKyAgICAgICAgICAgIHRlc3RzVGFibGUuYXBwZW5kQ2hpbGQocm93KTsK
KyAgICB9CisKKyAgICBzdGF0aWMgc29ydENvbHVtbihjb2x1bW5OdW1iZXIpCisgICAgeworICAg
ICAgICBsZXQgbmV3SGVhZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMtdGFi
bGUnKS5xdWVyeVNlbGVjdG9yQWxsKCd0aCcpW2NvbHVtbk51bWJlcl07CisgICAgICAgIFRhYmxl
U29ydGVyLl9zb3J0KG5ld0hlYWRlcik7CisgICAgfQorCisgICAgc3RhdGljIGhhbmRsZUNsaWNr
KGUpCisgICAgeworICAgICAgICBsZXQgbmV3SGVhZGVyID0gZS50YXJnZXQ7CisgICAgICAgIGlm
IChuZXdIZWFkZXIubG9jYWxOYW1lICE9ICd0aCcpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIFRhYmxlU29ydGVyLl9zb3J0KG5ld0hlYWRlcik7CisgICAgfQorCisgICAgc3RhdGljIF9z
b3J0KG5ld0hlYWRlcikKKyAgICB7CisgICAgICAgIFRhYmxlU29ydGVyLl91cGRhdGVIZWFkZXJD
bGFzc05hbWVzKG5ld0hlYWRlcik7CisgICAgCisgICAgICAgIGxldCByZXZlcnNlZCA9IG5ld0hl
YWRlci5jbGFzc0xpc3QuY29udGFpbnMoJ3JldmVyc2VkJyk7CisgICAgICAgIGxldCBzb3J0QXJy
b3cgPSByZXZlcnNlZCA/IFRhYmxlU29ydGVyLl9iYWNrd2FyZEFycm93KCkgOiBUYWJsZVNvcnRl
ci5fZm9yd2FyZEFycm93KCk7CisgICAgICAgIG5ld0hlYWRlci5pbm5lckhUTUwgPSBUYWJsZVNv
cnRlci5fc29ydGVkQ29udGVudHMobmV3SGVhZGVyLCBzb3J0QXJyb3cpOworICAgIAorICAgICAg
ICBUYWJsZVNvcnRlci5fc29ydFJvd3MobmV3SGVhZGVyLCByZXZlcnNlZCk7CisgICAgfSAgICAK
K307CisKK2NsYXNzIE9wdGlvbldyaXRlciB7CisgICAgc3RhdGljIHNhdmUoKQorICAgIHsKKyAg
ICAgICAgbGV0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsYWJlbCBpbnB1
dCcpOworICAgICAgICBsZXQgZGF0YSA9IHt9OworICAgICAgICBmb3IgKGxldCBvcHRpb24gb2Yg
b3B0aW9ucykKKyAgICAgICAgICAgIGRhdGFbb3B0aW9uLmlkXSA9IG9wdGlvbi5jaGVja2VkOwor
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShPcHRpb25X
cml0ZXIuX2tleSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpOworICAgICAgICB9IGNhdGNoIChlcnIp
IHsKKyAgICAgICAgICAgIGlmIChlcnIubmFtZSAhPSAiU2VjdXJpdHlFcnJvciIpCisgICAgICAg
ICAgICAgICAgdGhyb3cgZXJyOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGFwcGx5
KCkKKyAgICB7CisgICAgICAgIGxldCBqc29uOworICAgICAgICB0cnkgeworICAgICAgICAgICAg
anNvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKE9wdGlvbldyaXRlci5fa2V5KTsKKyAgICAgICAg
fSBjYXRjaCAoZXJyKSB7CisgICAgICAgICAgIGlmIChlcnIubmFtZSAhPSAiU2VjdXJpdHlFcnJv
ciIpCisgICAgICAgICAgICAgIHRocm93IGVycjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
anNvbikgeworICAgICAgICAgICAgY29udHJvbGxlci51cGRhdGVBbGxPcHRpb25zKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFy
c2UoanNvbik7CisgICAgICAgIGZvciAobGV0IGlkIGluIGRhdGEpIHsKKyAgICAgICAgICAgIGxl
dCBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICAgICAgICAgIGlmIChp
bnB1dCkKKyAgICAgICAgICAgICAgICBpbnB1dC5jaGVja2VkID0gZGF0YVtpZF07CisgICAgICAg
IH0KKyAgICAgICAgY29udHJvbGxlci51cGRhdGVBbGxPcHRpb25zKCk7CisgICAgfQorCisgICAg
c3RhdGljIGdldCBfa2V5KCkKKyAgICB7CisgICAgICAgIHJldHVybiAncnVuLXdlYmtpdC10ZXN0
cy1vcHRpb25zJzsKKyAgICB9Cit9OworCitsZXQgdGVzdFJlc3VsdHM7CitmdW5jdGlvbiBBRERf
UkVTVUxUUyhpbnB1dCkKK3sKKyAgICB0ZXN0UmVzdWx0cyA9IG5ldyBUZXN0UmVzdWx0cyhpbnB1
dCk7Cit9Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9ImZ1bGxfcmVzdWx0cy5qc29uIj48L3Nj
cmlwdD4KKworPHNjcmlwdD4KKworY2xhc3MgVGVzdE5hdmlnYXRvcgoreworICAgIGNvbnN0cnVj
dG9yKCkgeworICAgICAgICB0aGlzLmN1cnJlbnRUZXN0SW5kZXggPSAtMTsKKyAgICAgICAgdGhp
cy5mbGFnZ2VkVGVzdHMgPSB7fTsKKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcign
a2V5cHJlc3MnLCB0aGlzLCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIGhhbmRsZUV2ZW50KGV2
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT0gJ2tleXByZXNzJykgeworICAg
ICAgICAgICAgdGhpcy5oYW5kbGVLZXlFdmVudChldmVudCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBoYW5kbGVLZXlFdmVudChldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmIChldmVudC5tZXRhS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmN0cmxL
ZXkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgc3dpdGNoIChTdHJpbmcuZnJvbUNo
YXJDb2RlKGV2ZW50LmNoYXJDb2RlKSkgeworICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAg
ICAgICAgICAgdGhpcy5fc2Nyb2xsVG9GaXJzdFRlc3QoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgJ2onOgorICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRv
TmV4dFRlc3QoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2sn
OgorICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvUHJldmlvdXNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdsJzoKKyAgICAgICAgICAgICAgICB0
aGlzLl9zY3JvbGxUb0xhc3RUZXN0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICdlJzoKKyAgICAgICAgICAgICAgICB0aGlzLl9leHBhbmRDdXJyZW50VGVzdCgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAg
ICAgICAgICAgdGhpcy5fY29sbGFwc2VDdXJyZW50VGVzdCgpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAndCc6CisgICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xl
Q3VycmVudFRlc3QoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
J2YnOgorICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZUN1cnJlbnRUZXN0RmxhZ2dlZCgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgX3Njcm9sbFRv
Rmlyc3RUZXN0KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZXRDdXJyZW50VGVzdCgwKSkK
KyAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFRlc3QoKTsKKyAgICB9CisKKyAgICBf
c2Nyb2xsVG9MYXN0VGVzdCgpCisgICAgeworICAgICAgICBsZXQgbGlua3MgPSBjb250cm9sbGVy
LnZpc2libGVUZXN0cygpOworICAgICAgICBpZiAodGhpcy5fc2V0Q3VycmVudFRlc3QobGlua3Mu
bGVuZ3RoIC0gMSkpCisgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0N1cnJlbnRUZXN0KCk7Cisg
ICAgfQorCisgICAgX3Njcm9sbFRvTmV4dFRlc3QoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
Y3VycmVudFRlc3RJbmRleCA9PSAtMSkKKyAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvRmlyc3RU
ZXN0KCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3NldEN1cnJlbnRUZXN0KHRoaXMuY3VycmVu
dFRlc3RJbmRleCArIDEpKQorICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVG9DdXJyZW50VGVzdCgp
OworICAgIH0KKworICAgIF9zY3JvbGxUb1ByZXZpb3VzVGVzdCgpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5jdXJyZW50VGVzdEluZGV4ID09IC0xKQorICAgICAgICAgICAgdGhpcy5fc2Nyb2xs
VG9MYXN0VGVzdCgpOworICAgICAgICBlbHNlIGlmICh0aGlzLl9zZXRDdXJyZW50VGVzdCh0aGlz
LmN1cnJlbnRUZXN0SW5kZXggLSAxKSkKKyAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVu
dFRlc3QoKTsKKyAgICB9CisKKyAgICBfY3VycmVudFRlc3RMaW5rKCkKKyAgICB7CisgICAgICAg
IGxldCBsaW5rcyA9IGNvbnRyb2xsZXIudmlzaWJsZVRlc3RzKCk7CisgICAgICAgIHJldHVybiBs
aW5rc1t0aGlzLmN1cnJlbnRUZXN0SW5kZXhdOworICAgIH0KKworICAgIF9jdXJyZW50VGVzdEV4
cGFuZExpbmsoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUZXN0TGluaygp
LnF1ZXJ5U2VsZWN0b3IoJy5leHBhbmQtYnV0dG9uLXRleHQnKTsKKyAgICB9CisKKyAgICBfZXhw
YW5kQ3VycmVudFRlc3QoKQorICAgIHsKKyAgICAgICAgY29udHJvbGxlci5leHBhbmRFeHBlY3Rh
dGlvbnModGhpcy5fY3VycmVudFRlc3RFeHBhbmRMaW5rKCkpOworICAgIH0KKworICAgIF9jb2xs
YXBzZUN1cnJlbnRUZXN0KCkKKyAgICB7CisgICAgICAgIGNvbnRyb2xsZXIuY29sbGFwc2VFeHBl
Y3RhdGlvbnModGhpcy5fY3VycmVudFRlc3RFeHBhbmRMaW5rKCkpOworICAgIH0KKworICAgIF90
b2dnbGVDdXJyZW50VGVzdCgpCisgICAgeworICAgICAgICBjb250cm9sbGVyLnRvZ2dsZUV4cGVj
dGF0aW9ucyh0aGlzLl9jdXJyZW50VGVzdEV4cGFuZExpbmsoKSk7CisgICAgfQorCisgICAgX3Rv
Z2dsZUN1cnJlbnRUZXN0RmxhZ2dlZCgpCisgICAgeworICAgICAgICBsZXQgdGVzdExpbmsgPSB0
aGlzLl9jdXJyZW50VGVzdExpbmsoKTsKKyAgICAgICAgdGhpcy5mbGFnVGVzdCh0ZXN0TGluaywg
IXRlc3RMaW5rLmNsYXNzTGlzdC5jb250YWlucygnZmxhZ2dlZCcpKTsKKyAgICB9CisKKyAgICAv
LyBGSVhNRTogVGVzdCBuYXZpZ2F0b3Igc2hvdWxkbid0IGtub3cgYW55dGhpbmcgYWJvdXQgZmxh
Z2dpbmcuIEl0IHNob3VsZCBwcm9iYWJseSBjYWxsIG91dCB0byBUZXN0RmxhZ2dlciBvciBzb21l
dGhpbmcuCisgICAgLy8gRklYTUU6IEJhdGNoIGZsYWdnaW5nIChhdm9pZCB1cGRhdGVGbGFnZ2Vk
VGVzdHMgb24gZWFjaCB0ZXN0KS4KKyAgICBmbGFnVGVzdCh0ZXN0VGJvZHksIHNob3VsZEZsYWcp
CisgICAgeworICAgICAgICBsZXQgdGVzdE5hbWUgPSB0ZXN0VGJvZHkucXVlcnlTZWxlY3Rvcign
LnRlc3QtbGluaycpLmlubmVyVGV4dDsKKyAgICAKKyAgICAgICAgaWYgKHNob3VsZEZsYWcpIHsK
KyAgICAgICAgICAgIHRlc3RUYm9keS5jbGFzc0xpc3QuYWRkKCdmbGFnZ2VkJyk7CisgICAgICAg
ICAgICB0aGlzLmZsYWdnZWRUZXN0c1t0ZXN0TmFtZV0gPSAxOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdGVzdFRib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2ZsYWdnZWQnKTsKKyAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLmZsYWdnZWRUZXN0c1t0ZXN0TmFtZV07CisgICAgICAgIH0KKwor
ICAgICAgICB0aGlzLnVwZGF0ZUZsYWdnZWRUZXN0cygpOworICAgIH0KKworICAgIHVwZGF0ZUZs
YWdnZWRUZXN0cygpCisgICAgeworICAgICAgICBsZXQgZmxhZ2dlZFRlc3RUZXh0Ym94ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZsYWdnZWQtdGVzdHMnKTsKKyAgICAgICAgaWYgKCFmbGFn
Z2VkVGVzdFRleHRib3gpIHsKKyAgICAgICAgICAgIGxldCBmbGFnZ2VkVGVzdENvbnRhaW5lciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICAgICAgZmxhZ2dlZFRlc3RD
b250YWluZXIuaWQgPSAnZmxhZ2dlZC10ZXN0LWNvbnRhaW5lcic7CisgICAgICAgICAgICBmbGFn
Z2VkVGVzdENvbnRhaW5lci5jbGFzc05hbWUgPSAnZmxvYXRpbmctcGFuZWwnOworICAgICAgICAg
ICAgZmxhZ2dlZFRlc3RDb250YWluZXIuaW5uZXJIVE1MID0gJzxoMj5GbGFnZ2VkIFRlc3RzPC9o
Mj48cHJlIGlkPSJmbGFnZ2VkLXRlc3RzIiBjb250ZW50RWRpdGFibGU+PC9wcmU+JzsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmxhZ2dlZFRlc3RDb250YWluZXIpOwor
CisgICAgICAgICAgICBmbGFnZ2VkVGVzdFRleHRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZmxhZ2dlZC10ZXN0cycpOworICAgICAgICB9CisKKyAgICAgICAgbGV0IGZsYWdnZWRUZXN0
cyA9IE9iamVjdC5rZXlzKHRoaXMuZmxhZ2dlZFRlc3RzKTsKKyAgICAgICAgZmxhZ2dlZFRlc3Rz
LnNvcnQoKTsKKyAgICAgICAgbGV0IHNlcGFyYXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd1c2UtbmV3bGluZXMnKS5jaGVja2VkID8gJ1xuJyA6ICcgJzsKKyAgICAgICAgZmxhZ2dlZFRl
c3RUZXh0Ym94LmlubmVySFRNTCA9IGZsYWdnZWRUZXN0cy5qb2luKHNlcGFyYXRvcik7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmbGFnZ2VkLXRlc3QtY29udGFpbmVyJykuc3R5
bGUuZGlzcGxheSA9IGZsYWdnZWRUZXN0cy5sZW5ndGggPyAnJyA6ICdub25lJzsKKyAgICB9CisK
KyAgICBfc2V0Q3VycmVudFRlc3QodGVzdEluZGV4KQorICAgIHsKKyAgICAgICAgbGV0IGxpbmtz
ID0gY29udHJvbGxlci52aXNpYmxlVGVzdHMoKTsKKyAgICAgICAgaWYgKHRlc3RJbmRleCA8IDAg
fHwgdGVzdEluZGV4ID49IGxpbmtzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBsZXQgY3VycmVudFRlc3QgPSBsaW5rc1t0aGlzLmN1cnJlbnRUZXN0SW5kZXhd
OworICAgICAgICBpZiAoY3VycmVudFRlc3QpCisgICAgICAgICAgICBjdXJyZW50VGVzdC5jbGFz
c0xpc3QucmVtb3ZlKCdjdXJyZW50Jyk7CisKKyAgICAgICAgdGhpcy5jdXJyZW50VGVzdEluZGV4
ID0gdGVzdEluZGV4OworCisgICAgICAgIGN1cnJlbnRUZXN0ID0gbGlua3NbdGhpcy5jdXJyZW50
VGVzdEluZGV4XTsKKyAgICAgICAgY3VycmVudFRlc3QuY2xhc3NMaXN0LmFkZCgnY3VycmVudCcp
OworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIF9zY3JvbGxUb0N1cnJlbnRU
ZXN0KCkKKyAgICB7CisgICAgICAgIGxldCB0YXJnZXRMaW5rID0gdGhpcy5fY3VycmVudFRlc3RM
aW5rKCk7CisgICAgICAgIGlmICghdGFyZ2V0TGluaykKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBsZXQgcm93UmVjdCA9IHRhcmdldExpbmsuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CisgICAgICAgIC8vIHJvd1JlY3QgaXMgaW4gY2xpZW50IGNvb3JkcyAoaS5lLiByZWxhdGl2ZSB0
byB2aWV3cG9ydCksIHNvIHdlIGp1c3Qgd2FudCB0byBhZGQgaXRzIHRvcCB0byB0aGUgY3VycmVu
dCBzY3JvbGwgcG9zaXRpb24uCisgICAgICAgIGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Ny
b2xsVG9wICs9IHJvd1JlY3QudG9wOworICAgIH0KKworICAgIG9ubHlTaG93VW5leHBlY3RlZEZh
aWx1cmVzQ2hhbmdlZCgpCisgICAgeworICAgICAgICBsZXQgY3VycmVudFRlc3QgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcuY3VycmVudCcpOworICAgICAgICBpZiAoIWN1cnJlbnRUZXN0KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIElmIG91ciBjdXJyZW50VGVzdCBiZWNh
bWUgaGlkZGVuLCByZXNldCB0aGUgY3VycmVudFRlc3RJbmRleC4KKyAgICAgICAgaWYgKGNvbnRy
b2xsZXIub25seVNob3dVbmV4cGVjdGVkRmFpbHVyZXMoKSAmJiBjdXJyZW50VGVzdC5jbGFzc0xp
c3QuY29udGFpbnMoJ2V4cGVjdGVkJykpCisgICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0ZpcnN0
VGVzdCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIFJlY29tcHV0ZSB0aGlzLmN1
cnJlbnRUZXN0SW5kZXgKKyAgICAgICAgICAgIGxldCBsaW5rcyA9IGNvbnRyb2xsZXIudmlzaWJs
ZVRlc3RzKCk7CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRUZXN0SW5kZXggPSBsaW5rcy5pbmRl
eE9mKGN1cnJlbnRUZXN0KTsKKyAgICAgICAgfQorICAgIH0KK307CisKK2Z1bmN0aW9uIGhhbmRs
ZU1vdXNlRG93bihlKQoreworICAgIGlmICghVXRpbHMucGFyZW50T2ZUeXBlKGUudGFyZ2V0LCAn
I29wdGlvbnMtbWVudScpICYmIGUudGFyZ2V0LmlkICE9ICdvcHRpb25zLWxpbmsnKQorICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3B0aW9ucy1tZW51JykuY2xhc3NOYW1lID0gJ2hp
ZGRlbi1tZW51JzsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywg
aGFuZGxlTW91c2VEb3duLCBmYWxzZSk7CisKK2xldCBjb250cm9sbGVyOworbGV0IHBpeGVsWm9v
bWVyOworbGV0IHRlc3ROYXZpZ2F0b3I7CisKK2Z1bmN0aW9uIGdlbmVyYXRlUGFnZSgpCit7Cisg
ICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLWNvbnRlbnQn
KTsKKworICAgIGNvbnRyb2xsZXIgPSBuZXcgVGVzdFJlc3VsdHNDb250cm9sbGVyKGNvbnRhaW5l
ciwgdGVzdFJlc3VsdHMpOworICAgIHBpeGVsWm9vbWVyID0gbmV3IFBpeGVsWm9vbWVyKCk7Cisg
ICAgdGVzdE5hdmlnYXRvciA9IG5ldyBUZXN0TmF2aWdhdG9yKCk7CisKKyAgICBPcHRpb25Xcml0
ZXIuYXBwbHkoKTsKKworICAgIGNvbnNvbGUubG9nKCJyZW5kZXJlZCB0ZXN0IHJlc3VsdHMgcGFn
ZSEiKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBnZW5lcmF0ZVBhZ2Us
IGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8Ym9keT4KKyAgICAKKyAgICA8ZGl2IGNsYXNzPSJjb250
ZW50LWNvbnRhaW5lciI+CisgICAgICAgIDxkaXYgaWQ9InRvb2xiYXIiIGNsYXNzPSJmbG9hdGlu
Zy1wYW5lbCI+CisgICAgICAgIDxkaXYgY2xhc3M9Im5vdGUiPlVzZSB0aGUgaSwgaiwgayBhbmQg
bCBrZXlzIHRvIG5hdmlnYXRlLCBlLCBjIHRvIGV4cGFuZCBhbmQgY29sbGFwc2UsIGFuZCBmIHRv
IGZsYWc8L2Rpdj4KKyAgICAgICAgPGEgY2xhc3M9ImNsaWNrYWJsZSIgb25jbGljaz0iY29udHJv
bGxlci5leHBhbmRBbGxFeHBlY3RhdGlvbnMoKSI+ZXhwYW5kIGFsbDwvYT4KKyAgICAgICAgPGEg
Y2xhc3M9ImNsaWNrYWJsZSIgb25jbGljaz0iY29udHJvbGxlci5jb2xsYXBzZUFsbEV4cGVjdGF0
aW9ucygpIj5jb2xsYXBzZSBhbGw8L2E+CisgICAgICAgIDxhIGNsYXNzPSJjbGlja2FibGUiIGlk
PW9wdGlvbnMtbGluayBvbmNsaWNrPSJjb250cm9sbGVyLnRvZ2dsZU9wdGlvbnNNZW51KCkiPm9w
dGlvbnM8L2E+CisgICAgICAgIDxkaXYgaWQ9Im9wdGlvbnMtbWVudSIgY2xhc3M9ImhpZGRlbi1t
ZW51Ij4KKyAgICAgICAgICAgIDxsYWJlbD48aW5wdXQgaWQ9InVuZXhwZWN0ZWQtcmVzdWx0cyIg
dHlwZT0iY2hlY2tib3giIGNoZWNrZWQgb25jaGFuZ2U9ImNvbnRyb2xsZXIuaGFuZGxlVW5leHBl
Y3RlZFJlc3VsdHNDaGFuZ2UoKSI+T25seSB1bmV4cGVjdGVkIHJlc3VsdHM8L2xhYmVsPgorICAg
ICAgICAgICAgPGxhYmVsPjxpbnB1dCBpZD0idG9nZ2xlLWltYWdlcyIgdHlwZT0iY2hlY2tib3gi
IGNoZWNrZWQgb25jaGFuZ2U9ImNvbnRyb2xsZXIuaGFuZGxlVG9nZ2xlSW1hZ2VzQ2hhbmdlKCki
PlRvZ2dsZSBpbWFnZXM8L2xhYmVsPgorICAgICAgICAgICAgPGxhYmVsIHRpdGxlPSJVc2UgbmV3
bGluZXMgaW5zdGVhZCBvZiBzcGFjZXMgdG8gc2VwYXJhdGUgZmxhZ2dlZCB0ZXN0cyI+PGlucHV0
IGlkPSJ1c2UtbmV3bGluZXMiIHR5cGU9ImNoZWNrYm94IiBjaGVja2VkIG9uY2hhbmdlPSJjb250
cm9sbGVyLmhhbmRsZVRvZ2dsZVVzZU5ld2xpbmVzKCkiPlVzZSBuZXdsaW5lcyBpbiBmbGFnZ2Vk
IGxpc3Q8L2xhYmVsPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworPGRpdiBpZD0ibWFp
bi1jb250ZW50Ij48L2Rpdj4KKworPC9ib2R5PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNzIwODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDEtMjkgIFNhYW0gQmFyYXRpICA8
c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgTGF6aWx5IGNyZWF0ZSBtX3dpbmRvd0Nsb3Nl
V2F0Y2hwb2ludHMgc28gd2UgZG9uJ3QgbWlzdGFrZW5seSB0aGluayB3ZSBoYXZlIGEgZnJhbWUg
d2hlbiByZS1hc3NvY2lhdGluZyBhIGRvY3VtZW50IHRvIGEgZ2l2ZW4gY2FjaGVkIGZyYW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjEwOTgKKyAg
ICAgICAgPHJkYXI6Ly83Mjg5NDQ1ND4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5p
d2EgYW5kIE1hcmsgTGFtLgorCisgICAgICAgICogYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmNvbW1pdCk6CisgICAgICAgICogYnl0ZWNvZGUvV2F0
Y2hwb2ludC5oOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojppc1N0aWxsVmFsaWRPbkpT
VGhyZWFkIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldFdhdGNocG9pbnRTZXQpOgorCiAyMDIxLTAxLTI5ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNvdXJjZVBh
cnNlTW9kZSBzaG91bGQgYmUgYSBtZW1iZXIgb2YgdGhlIEpTQzo6UGFyc2VyCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwCShyZXZpc2lvbiAy
NzE5ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5MiwyMyArMTkyLDI3IEBAIFZlY3RvcjxXYXRjaHBvaW50U2V0
KiwgMj4gQWNjZXNzQ2FzZTo6Y28KIAogICAgIFZlY3RvcjxXYXRjaHBvaW50U2V0KiwgMj4gcmVz
dWx0OwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKCk7CisgICAg
YXV0byBhcHBlbmQgPSBbJl0gKGF1dG8qIHNldCkgeworICAgICAgICBBU1NFUlQoc2V0LT5pc1N0
aWxsVmFsaWQoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc2V0KTsKKyAgICB9OwogCiAgICAg
aWYgKG1faWRlbnRpZmllcikgewogICAgICAgICBpZiAoKHN0cnVjdHVyZSAmJiBzdHJ1Y3R1cmUt
Pm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkKICAgICAgICAgICAgIHx8IG1fY29uZGl0
aW9uU2V0Lm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKQogICAgICAgICAgICAgfHwgKG1f
cG9seVByb3RvQWNjZXNzQ2hhaW4gJiYgbV9wb2x5UHJvdG9BY2Nlc3NDaGFpbi0+bmVlZEltcHVy
ZVByb3BlcnR5V2F0Y2hwb2ludCh2bSkpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh2bS5l
bnN1cmVXYXRjaHBvaW50U2V0Rm9ySW1wdXJlUHJvcGVydHkobV9pZGVudGlmaWVyLnVpZCgpKSk7
CisgICAgICAgICAgICBhcHBlbmQodm0uZW5zdXJlV2F0Y2hwb2ludFNldEZvckltcHVyZVByb3Bl
cnR5KG1faWRlbnRpZmllci51aWQoKSkpOwogICAgIH0KIAogICAgIGlmIChhZGRpdGlvbmFsU2V0
KCkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoYWRkaXRpb25hbFNldCgpKTsKKyAgICAgICAgYXBw
ZW5kKGFkZGl0aW9uYWxTZXQoKSk7CiAKICAgICBpZiAoc3RydWN0dXJlCiAgICAgICAgICYmIHN0
cnVjdHVyZS0+aGFzUmFyZURhdGEoKQogICAgICAgICAmJiBzdHJ1Y3R1cmUtPnJhcmVEYXRhKCkt
Pmhhc1NoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKQogICAgICAgICAmJiBzdHJ1Y3R1cmUtPnJh
cmVEYXRhKCktPnNoYXJlZFBvbHlQcm90b1dhdGNocG9pbnQoKS0+aXNTdGlsbFZhbGlkKCkpIHsK
ICAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5yYXJlRGF0YSgpLT5zaGFy
ZWRQb2x5UHJvdG9XYXRjaHBvaW50KCktPmluZmxhdGUoKTsKLSAgICAgICAgcmVzdWx0LmFwcGVu
ZChzZXQpOworICAgICAgICBhcHBlbmQoc2V0KTsKICAgICB9CiAKICAgICBtX3N0YXRlID0gQ29t
bWl0dGVkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2lu
dC5oCShyZXZpc2lvbiAyNzE5ODkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
V2F0Y2hwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNiArMjI0LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0ZSgpICE9IElzSW52YWxpZGF0ZWQ7CiAgICAgfQor
ICAgIC8vIEZhc3Qgd2F5IG9mIHRlc3RpbmcgaXNTdGlsbFZhbGlkKCksIHdoaWNoIG9ubHkgd29y
a3MgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCisgICAgYm9vbCBpc1N0aWxsVmFsaWRPbkpTVGhyZWFk
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0ZU9uSlNUaHJlYWQoKSAhPSBJc0lu
dmFsaWRhdGVkOworICAgIH0KICAgICAvLyBMaWtlIGlzU3RpbGxWYWxpZCgpLCBtYXkgYmUgY2Fs
bGVkIGZyb20gYW5vdGhlciB0aHJlYWQuCiAgICAgYm9vbCBoYXNCZWVuSW52YWxpZGF0ZWQoKSBj
b25zdCB7IHJldHVybiAhaXNTdGlsbFZhbGlkKCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCShyZXZpc2lvbiAyNzE5ODkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcwLDYgKzM3MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0V2F0Y2hwb2lu
dFNldChXYXRjaHBvaW50U2V0JiBzZXQpCiAgICAgeworICAgICAgICBBU1NFUlQoc2V0LmlzU3Rp
bGxWYWxpZCgpKTsKICAgICAgICAgbV93YXRjaHBvaW50U2V0ID0gJnNldDsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTk4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIxLTAxLTI5ICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIExhemlseSBjcmVhdGUgbV93aW5kb3dD
bG9zZVdhdGNocG9pbnRzIHNvIHdlIGRvbid0IG1pc3Rha2VubHkgdGhpbmsgd2UgaGF2ZSBhIGZy
YW1lIHdoZW4gcmUtYXNzb2NpYXRpbmcgYSBkb2N1bWVudCB0byBhIGdpdmVuIGNhY2hlZCBmcmFt
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMDk4
CisgICAgICAgIDxyZGFyOi8vNzI4OTQ0NTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhIGFuZCBNYXJrIExhbS4KKworICAgICAgICBUaGVyZSdzIGEgc2NlbmFyaW8gd2hlbiB3
ZSBnbyBiYWNrIHdoaWxlIHVzaW5nIHRoZSBiYWNrIGZvcndhcmQgY2FjaGUsIGFuZAorICAgICAg
ICB3ZSByZS1hc3NvY2lhdGUgYSBjYWNoZWQgZnJhbWUgd2l0aCBhIGRvY3VtZW50LCB0aGF0IHdl
IHdlcmUgY3JlYXRpbmcgYW4KKyAgICAgICAgYWxyZWFkeSBpbnZhbGlkYXRlZCAiZnJhbWUgY2xl
YXJlZCIgd2F0Y2hwb2ludC4KKyAgICAgICAgVGhlcmUgd2VyZSBhIGZldyB0aGluZ3Mgd2Ugd2Vy
ZSBkb2luZyB3cm9uZzoKKyAgICAgICAgMS4gSW4gSlNET01XaW5kb3dCYXNlJ3MgY29uc3RydWN0
b3IsIHdlIHRob3VnaHQgdGhhdCB3ZSBkaWRuJ3QgaGF2ZSBhIGZyYW1lLAorICAgICAgICBldmVu
IHRob3VnaCB3ZSBkaWQuIEl0IHdhcyBiZWNhdXNlIHdlIGhhZG4ndCBmaW5pc2hlZCB0aGUgYm9v
a2tlZXBpbmcgaW4KKyAgICAgICAgYEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1lQmFzZSYg
Y2FjaGVkRnJhbWUpYCB0aGF0IGFzc29jaWF0ZXMgYSBkb2N1bWVudCB3aXRoIGEKKyAgICAgICAg
ZnJhbWUuIEFuZCBET01XaW5kb3cgcmVsaWVzIG9uIGl0cyBkb2N1bWVudCB0byBnZXQgaXRzIGZy
YW1lLiAKKyAgICAgICAgMi4gV2hlbiB0aGUgd2F0Y2hwb2ludCB3YXMgaW52YWxpZGF0ZWQsIHdl
IHdlcmUgc3RpbGwgdGVsbGluZyB0aGUgUHJvcGVydHlTbG90CisgICAgICAgIGFib3V0IGl0LiBU
aGlzIHdhcyBicmVha2luZyBKU0MncyBpbnZhcmlhbnQgdGhhdCB0aGVzZSBoYWQgdG8gYmUgdmFs
aWQKKyAgICAgICAgd2F0Y2hwb2ludHMuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIHJl
c29sdmVzOgorICAgICAgICAxLiBXZSBub3cgbGF6aWx5IGNyZWF0ZSB0aGUgd2F0Y2hwb2ludCB3
aGVuIHdlIGZpcnN0IG5lZWQgaXQuIEJ5IHRoYXQgdGltZSwgd2UKKyAgICAgICAgd291bGQndmUg
YWxyZWFkeSBiZWVuIGFzc29jaWF0ZWQgd2l0aCBhIGZyYW1lIGluIHRoZSBhYm92ZSBleGFtcGxl
LgorICAgICAgICAyLiBXZSBjaGVjayBpZiB0aGUgd2F0Y2hwb2ludCBpcyBzdGlsbCB2YWxpZCBi
ZWZvcmUgdGVsbGluZyB0aGUgUHJvcGVydHlTbG90CisgICAgICAgIGFib3V0IGl0LCBpbnN0ZWFk
IG9mIGFsd2F5cyBhc3N1bWluZyBpdCdzIHZhbGlkLgorICAgICAgICAKKyAgICAgICAgSSB3YXNu
J3QgYWJsZSB0byBnZXQgdGhpcyB0ZXN0IHRvIGZhaWwgaW4gV0tUUi9EUlQsIGJlY2F1c2UgaXQg
c2VlbXMgdG8gYmUKKyAgICAgICAgd2UncmUgY3Jhc2hpbmcgd2hlbiBydW5uaW5nIHNvbWUgSlMg
Y29kZSBmcm9tIFNhZmFyaSdzIGluamVjdGVkIGJ1bmRsZS4gSSd2ZQorICAgICAgICBhZGRlZCBh
IG1hbnVhbCB0ZXN0IGluc3RlYWQuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRv
d0Jhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorCiAyMDIxLTAxLTI3ICBBZGEgQ2hh
biAgPGFkYS5jaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTZW5kIHRoZSBlbmQgWFJTZXNzaW9u
RXZlbnQgYWZ0ZXIgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHN0ZXBzIGZvciBzZXNzaW9uIHNodXRk
b3duIGhhdmUgY29tcGxldGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDI3MTk4OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcg
Kzk1LDYgQEAgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kbwogCiBKU0RP
TVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBSZWZQdHI8RE9NV2luZG93PiYmIHdpbmRvdywgSlNXaW5kb3dQcm94eSogcHJveHkpCiAgICAg
OiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCBwcm94eS0+d29ybGQoKSwgJnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUpCi0gICAgLCBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMoV2F0
Y2hwb2ludFNldDo6Y3JlYXRlKCh3aW5kb3cgJiYgd2luZG93LT5mcmFtZSgpKSA/IElzV2F0Y2hl
ZCA6IElzSW52YWxpZGF0ZWQpKQogICAgICwgbV93cmFwcGVkKFdURk1vdmUod2luZG93KSkKIHsK
ICAgICBtX3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgJKHJldmlzaW9uIDI3MTk4OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw3ICs5NCw3IEBAIHByb3RlY3RlZDoKICAgICBKU0RPTVdpbmRvd0Jhc2UoSlNDOjpW
TSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmUHRyPERPTVdpbmRvdz4mJiwgSlNXaW5kb3dQcm94eSop
OwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTV2luZG93UHJveHkqKTsKIAot
ICAgIFJlZjxKU0M6OldhdGNocG9pbnRTZXQ+IG1fd2luZG93Q2xvc2VXYXRjaHBvaW50czsKKyAg
ICBSZWZQdHI8SlNDOjpXYXRjaHBvaW50U2V0PiBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHM7CiAK
IHByaXZhdGU6CiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBjaGFyKiwgc2l6ZV90KT47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNzE5ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Myw5ICsyNDMsMTIgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlT
bG90KEpTTwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0LT53cmFwcGVkKCksIGVycm9y
TWVzc2FnZSkpCiAgICAgICAgIHJldHVybiBqc0RPTVdpbmRvd0dldE93blByb3BlcnR5U2xvdFJl
c3RyaWN0ZWRBY2Nlc3M8RE9NV2luZG93VHlwZTo6TG9jYWw+KHRoaXNPYmplY3QsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKSwgKmxleGljYWxHbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCwg
ZXJyb3JNZXNzYWdlKTsKIAotICAgIC8vIEZJWE1FOiB0aGlzIG5lZWRzIG1vcmUgZXhwbGFuYXRp
b24uCi0gICAgLy8gKFBhcnRpY3VsYXJseSwgaXMgaXQgY29ycmVjdCB0aGF0IHRoaXMgZXhpc3Rz
IGhlcmUgYnV0IG5vdCBpbiBnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4PykKLSAgICBzbG90LnNl
dFdhdGNocG9pbnRTZXQodGhpc09iamVjdC0+bV93aW5kb3dDbG9zZVdhdGNocG9pbnRzLmdldCgp
KTsKKyAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50
cykpCisgICAgICAgIHRoaXNPYmplY3QtPm1fd2luZG93Q2xvc2VXYXRjaHBvaW50cyA9IFdhdGNo
cG9pbnRTZXQ6OmNyZWF0ZSh0aGlzT2JqZWN0LT53cmFwcGVkKCkuZnJhbWUoKSA/IElzV2F0Y2hl
ZCA6IElzSW52YWxpZGF0ZWQpOworICAgIC8vIFdlIHVzZSBtX3dpbmRvd0Nsb3NlV2F0Y2hwb2lu
dHMgdG8gY2xlYXIgYW55IGlubGluZSBjYWNoZXMgb25jZSB0aGUgZnJhbWUgaXMgY2xlYXJlZC4K
KyAgICAvLyBUaGlzIGlzIHNvdW5kIGJlY2F1c2UgRE9NV2luZG93IGNhbiBiZSBhc3NvY2lhdGVk
IHdpdGggYXQgbW9zdCBvbmUgZnJhbWUgaW4gaXRzIGxpZmV0aW1lLgorICAgIGlmICh0aGlzT2Jq
ZWN0LT5tX3dpbmRvd0Nsb3NlV2F0Y2hwb2ludHMtPmlzU3RpbGxWYWxpZE9uSlNUaHJlYWQoKSkK
KyAgICAgICAgc2xvdC5zZXRXYXRjaHBvaW50U2V0KCp0aGlzT2JqZWN0LT5tX3dpbmRvd0Nsb3Nl
V2F0Y2hwb2ludHMpOwogCiAgICAgLy8gKDIpIFJlZ3VsYXIgb3duIHByb3BlcnRpZXMuCiAgICAg
UHJvcGVydHlTbG90IHNsb3RDb3B5ID0gc2xvdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>